Java11新增特性

前言

在前面的文章中,我们已经介绍了 Java9的新增特性 和 Java10的新增特性 ,下面我们书接上文,来介绍一下Java11的新增特性

版本简介

Java 11 是 Java 平台的最新版本,于2018年9月25日发布。这个版本是自Java 8以来最重要的更新之一,因为它引入了许多新功能和改进,以帮助开发者更高效地编写和维护代码。

Java 11 是长期支持版本,也被称为LTS版本。这个版本将得到 OpenJDK 社区的长期支持,直至 2023 年 9 月。它不仅会提供技术支持,对于特定生产环境的苛刻需求,它也提供了一个可能的选择。对于企业来说,选择 Java 11 将意味着长期的、可靠的、可预测的技术路线图。

Java 11 是 Java 平台的一次重大更新,它为开发者提供了许多新功能和改进,有助于提高代码的效率和可维护性。

特性列表

  • 局部变量类型推断 :可以使用 var 定义局部变量类型,编译器能够根据右边的表达式自动推断类型。
  • 字符串处理方法 :新增了一些字符串处理方法,如判断字符串是否为空白、去除首尾空格、去除尾部空格、去除首部空格、复制字符串和行数统计等。
  • Optional 加强 :Optional 增加了一些非常酷的方法,可以很方便地将一个 Optional 转换成一个 Stream,或者当一个空 Optional 时给它一个替代的。
  • 局部变量类型推断升级 :在 var 上添加注解的语法格式在 jdk10 中是不能实现的,而在 jdk11 中加入了这样的语法。
  • 新的垃圾收集器 :Java 11 引入了新的垃圾收集器,包括 ZGC 和 Shenandoah,它们提供了更高的吞吐量和更低的延迟。
  • 新的JDK(Java Development Kit) :Java 11 使用了新的 JDK,其中包含了许多新工具和功能,如 JShell(一个交互式 Java 代码求值器)和 JLink(一个用于创建自定义 Java 运行时映像的工具)。
  • 模块化系统 :Java 11 引入了模块化系统,这使得开发者能够将代码划分为模块,从而提高代码的可维护性和可重用性。
  • 改进的日期和时间API :Java 11 对日期和时间API进行了改进,使其更容易使用和处理各种时区和其他日期和时间相关的问题。
  • 支持 HTTP/2 :Java 11 支持 HTTP/2,这使得在网络连接上使用更高效的协议进行通信。
  • 改进的 NIO(非阻塞 I/O) :Java 11 对 NIO 进行了改进,使其更容易使用和处理高吞吐量的网络连接。

代码示例

Java 11 新增的特性包括多种类型推断、新的集合、新的日期和时间API等。下面是一些 Java 11 新特性的代码示例:

  • 局部变量类型推断:

var number = 10; // 自动推断为 int 类型
var name = "John"; // 自动推断为 String 类型
  • 字符串处理方法:

String str = "   Hello, World!   ";
// 去除首尾空格
str = str.trim();
System.out.println(str); // 输出 "Hello, World!"
// 判断字符串是否为空白
boolean isBlank = "".matches("\\s*"); // true
boolean isNotBlank = "Hello".matches("\\s*"); // false
// 复制字符串
String strCopy = str.copy(); // 返回一个与原字符串内容相同的字符串对象
  • Optional 加强:

Optional<String> optional = Optional.of("Hello");
optional.ifPresent(System.out::println); // 如果 Optional 非空,则打印其内容
optional = Optional.empty();
optional.ifPresent(System.out::println); // 如果 Optional 为空,则不执行任何操作
  • 新的日期和时间API:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Locale;
LocalDateTime now = LocalDateTime.now(); // 获取当前日期和时间
System.out.println(now); // 输出格式化后的日期和时间,例如 "2023-03-15T10:30:00"
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 定义日期和时间格式化器
String formattedDateTime = now.format(formatter); // 将日期和时间格式化为指定格式的字符串
System.out.println(formattedDateTime); // 输出格式化后的字符串,例如 "2023-03-15 10:30:00"
long daysSinceEpoch = now.toEpochDay(); // 将日期和时间转换为自纪元以来的天数(以秒为单位)
System.out.println(daysSinceEpoch); // 输出自纪元以来的天数,例如 "1678748800"(假设当前时间为2023年3月15日)

相关拓展

Java11对NIO的改进细节

Java 11 对 NIO 进行了改进,引入了新的通道(Channel)实现,包括对 AIO 的支持。这些改进旨在提高 NIO 的性能和可扩展性。

具体来说,Java 11 引入了以下对 NIO 的改进:
AIO(Asynchronous I/O) :AIO 是一种异步 I/O 模式,它利用了事件和回调来处理 accept、read 等操作。这种模式可以避免在大量客户端连接时频繁切换线程带来的问题,从而提高性能。

新的通道实现 :Java 11 对 NIO 的通道实现进行了改进,包括对 AIO 的支持。新的通道实现更高效、可扩展,并且更适合处理大量并发连接。

对选择性通道的支持 :Java 11 引入了选择性通道(Selectable Channel),这种通道可以注册多个事件,然后使用 select() 方法来阻塞等待事件的发生。这种机制可以提高并发处理能力。

支持 UTF-8 编码 :Java 11 将 UTF-8 编码作为默认的字符编码,这可以提高跨平台的兼容性和性能。

改进的文件 I/O :Java 11 对文件 I/O 进行了改进,引入了新的文件通道(FileChannel)实现,支持更好的文件共享和更高效的 I/O 操作。

总之,Java 11 对 NIO 的改进旨在提高性能、可扩展性和并发处理能力,以适应日益增长的网络和 I/O 需求。

其他拓展

Java对象的深拷贝

Vert.x学习笔记-Vert.x的基本处理单元Verticle

OkHttp使用详解

I/O基础知识入门

Dockerfile关键字介绍与注意事项

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/130338.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Mysql】next-key 锁范围

背景 Mysql RR场景下通过next-key 锁解决了幻读的问题&#xff0c;而幻读通常是由 insert 新增的数据导致。所以next-key锁最终通过锁机制防止了一定条件下的新增数据从而解决了幻读问题。 规律 next-key锁可以由以下几条规律总结出锁范围 next-key会对查询过程中访问到的对…

jenkins邮件告警

构建失败邮件通知 配置自己的邮箱 配置邮件服务&#xff0c;密码是授权码 添加构建后操作 扩展 配置流水线 添加扩展 钉钉通知 Jenkins安装钉钉插件 钉钉添加机器人 加签 https://oapi.dingtalk.com/robot/send?access_token98437f84ffb6cd64fa2d7698ef44191d49a11…

CSS特效005:绘制一个环环相扣的五个环

css实战中&#xff0c;怎么制作这样的一个环环相扣的五个环呢&#xff1f; 绘制五个圈圈很容易&#xff0c;关键是要环环相扣&#xff0c;尤其要注意环环相交部分的处理。这里要用到transform-style: preserve-3d; 和 transform: rotateY( 1deg ) 等关键的css技术。 效果图 源…

系列二十二、idea Live Templates

一、idea Live Templates 1.1、Java Group 1.1.1、fast fast 快速在类上添加注解Data AllArgsConstructor NoArgsConstructor Accessors(chain true) ToString(callSuper true) 1.1.2、getThreadName getThreadName快速获取当前线程的名字Thread.currentThread().getName…

Flink SQL自定义表值函数(Table Function)

使用场景&#xff1a; 表值函数即 UDTF&#xff0c;⽤于进⼀条数据&#xff0c;出多条数据的场景。 开发流程&#xff1a; 实现 org.apache.flink.table.functions.TableFunction 接⼝实现⼀个或者多个⾃定义的 eval 函数&#xff0c;名称必须叫做 eval&#xff0c;eval ⽅法…

Unity 场景优化策略

Unity 场景优化策略 GPU instancing 使用GPU Instancing可以将多个网格相同、材质相同、材质属性可以不同的物体合并为一个批次&#xff0c;从而减少Draw Calls的次数。这可以提高性能和渲染效率。 GPU instancing可用于绘制在场景中多次出现的几何体&#xff0c;例如树木或…

MIT6.5830 Lab1-GoDB实验记录(六)

MIT6.5830 Lab1-GoDB实验记录&#xff08;六&#xff09; – WhiteNights Site 标签&#xff1a;Golang 赛博坐牢之旅第一章第六节&#xff1a;接着上一节&#xff0c;补全heap_page剩下的函数。 开始坐牢 删除tuple 这个看起来…难度还没那么高&#xff0c;写一下试试吧。那…

HTTP和HTTPS详解

一)什么是HTTP协议 1)HTTP协议是倾向于相遇业务层次上面的一种协议&#xff0c;传输层协议主要考虑的是端对端之间的一个传输过程&#xff0c;TCP重点进行关注的是可靠传输&#xff1b;咱们的HTTP/1&#xff0c;HTTP/2是基于TCP的&#xff0c;但是咱们的HTTP/3是基于UDP的&…

QWidget背景图片在Qt Designer 中能显示但运行时不显示的解决方法

目录 1. 现象 2. 解决方法 3. 附录 1. 现象 今天想在QWidget中贴一张png图片作为背景图&#xff0c;在Qt Designer 能显示&#xff0c;但运行时&#xff0c;死活不显示背景图片。样式表设置如下&#xff1a; QWidget {border-image:url(:/untitled2/image/operpanel.png); }…

Linux 多线程控制详解

目录 多线程编临界资源访问 互斥锁 API 简述 初始化互斥量 互斥量加锁/解锁 互斥量加锁(非阻塞方式) 互斥量销毁 程序示例 多线程编执行顺序控制 信号量 API 简述 初始化信号量 信号量 P/V 操作 信号量申请(非阻塞方式) 信号量销毁 程序示例 条件变量 创建和销毁…

Mybatis-plus 内部提供的 ServiceImpl<M extends BaseMapper<T>, T> 学习总结

作用 当集成Mybatis-Plus 后&#xff0c;我们的大部分数据库操作都可以通过 XxxxxMapper &#xff0c;同时 Mybatis-plus 在Mapper 提供基本操作方法的同时&#xff0c;也提供类基础的 serviceImpl 来帮助我们完成一些常见的基本操作。 使用 一般情况下&#xff0c;我们首先…

Ipa Guard使用手册

使用手册 开始使用ipa guard代码混淆界面介绍文件混淆-界面介绍安装和登录Ipa Guard 相关教程 下载安装Ipa Guardipaguard注册和登录 下载安装Ipa Guard 可以前往ipaguard工具官网下载&#xff0c;工具是免费下载&#xff0c;免费体验使用的。下载地址是https://www.ipagua…

MS2358:96KHz、24bit 音频 ADC

MS2358 是带有采样速率 8kHz-96kHz 的立体声音频模数 转换器&#xff0c;适合于面向消费者的专业音频系统。 MS2358 通过使用增强型双位 Δ - ∑ 技术来实现其高精度 的特点。 MS2358 支持单端的模拟输入&#xff0c;所以不需要外部器 件&#xff0c;非常适合用于像 …

ChatGPT 宕机?OpenAI 将中断归咎于 DDoS 攻击

您的 ChatGPT 已关闭吗&#xff1f;您是否遇到 ChatGPT 问题&#xff0c;例如连接问题或遇到“长响应时出现网络错误”&#xff1f;– ChatGPT 遭受了一系列 DDoS 攻击&#xff0c;显然是由匿名苏丹组织策划的。 OpenAI 的 ChatGPT 是一款流行的人工智能聊天机器人&#xff0c;…

标本传送设备物联网应用案例|蓝蜂物联网一体化方案

标本传送设备物联网应用案例 标本传输系统被大量应用到现代医院场景中&#xff0c;系统各个设备的运行情况直接影响到整个医院系统的正常稳定&#xff0c;所以对于标本传输系统的实时监控和及时运维是维持医院稳定和规避风险的重中之重。 针对标本传输系统应用过程中的数据统…

ios安全加固 ios 加固方案

​ 目录 一、iOS加固保护原理 1.字符串混淆 2.类名、方法名混淆 3.程序结构混淆加密 4.反调试、反注入等一些主动保护策略 二 代码混淆步骤 1. 选择要混淆保护的ipa文件 2. 选择要混淆的类名称 3. 选择要混淆保护的函数&#xff0c;方法 4. 配置签名证书 5. 混淆和测…

centos7安装Nexus(Maven私服)与配置使用教程

之前有位大佬问我&#xff0c;他说有个第三方的Jar包&#xff0c;在idea导出库中使用&#xff0c;现在要部署上线测试&#xff0c;要如何导进去打包。 我说&#xff0c;不用那么麻烦&#xff0c;搞个Nexus私服&#xff0c;将Jar上传上去&#xff0c;然后配置Maven的setting文件…

现货黄金靠谱吗

现货黄金是一种相当不错的黄金投资方式&#xff0c;它通过紧密跟踪伦敦市场上黄金现货的价格走势&#xff0c;为投资者提供了捕捉差价的机会&#xff0c;而且在交易平台的帮助下&#xff0c;投资者可以获得很高的资金杠杆&#xff0c;因此即使只是抓住了一点点的行情波动&#…

01_ddim_inversion_CN

DDIM反转 设置 # !pip install -q transformers diffusers accelerateimport torch import requests import torch.nn as nn import torch.nn.functional as F from PIL import Image from io import BytesIO from tqdm.auto import tqdm from matplotlib import pyplot as p…

链表练习题

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…