Java11新增特性

news2024/12/29 17:11:17

前言

在前面的文章中,我们已经介绍了 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关键字介绍与注意事项

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

n-gram语言模型——句子概率分布计算与平滑

n-gram语言模型——句子概率分布计算与平滑 前言 语言模型 等价假设 n元语法 句子概率分布计算方式 数据平滑 Lidstone平滑(1-gram) Laplace平滑(1-gram) 附上两种平滑在1-gram下代码 Lidstone平滑与Laplace平滑(2-gram) 附上两种平滑在2-gram下代码 前言 语言模型…

隧道施工工艺流程vr线上虚拟展示成为产品3D说明书

行业内都知道&#xff0c;汽车生产的大部分都需要冲压加工来完成&#xff0c;因此汽车冲压工艺是汽车制造过程中的重要环节&#xff0c;传统的展示方式往往局限于二维图纸和实地操作&#xff0c;难以充分展现工艺的细节和流程。然而&#xff0c;随着技术的进步&#xff0c;汽车…

Java类和对象(续)

书接上回我们已经学完了对象的初始化&#xff0c;今天的内容更加精彩。 1.封装 面向对象程序的三大特征&#xff1a;封装&#xff0c;继承&#xff0c;多态。 本章主要也是要研究封装&#xff0c;简单来说就是套壳屏蔽细节。 封装的概念&#xff1a; 封装&#xff1a;将数据和…

【PWN · ret2csu】[HNCTF 2022 WEEK2]ret2csu

记一道ret2csu 一、题目 二、思路 1.ret2csu用write泄露write的真实地址->泄露libc->获得system的真实地址 2.ret2csu用read写/bin/sh字符串到bss段上 3.ret2csu用write将system的真实地址写到bss段上 4.ret2csu调用system 三、exp from pwn import * from pwn impo…

[100天算法】-最短无序连续子数组(day 70)

题目描述 给定一个整数数组&#xff0c;你需要寻找一个连续的子数组&#xff0c;如果对这个子数组进行升序排序&#xff0c;那么整个数组都会变为升序排序。你找到的子数组应是最短的&#xff0c;请输出它的长度。示例 1:输入: [2, 6, 4, 8, 10, 9, 15] 输出: 5 解释: 你只需要…

this和super

文章目录 this用法普通的直接引用区分形参与实参 super用法普通的直接引用区分子类与父类同名的属性或方法 this和super 与 构造方法总结 this this引用表示当前对象对象的引用。 用法 普通的直接引用 public class Test {int a ;int b;public Test() {this.b 0;} }调用当…

时间序列预测实战(十一)用SCINet实现滚动预测功能(附代码+数据集+原理介绍)

论文地址->SCINet官方论文地址 官方代码地址-> 官方代码下载地址 个人整理的代码地址->免费分享给大家创作不易请大家给文章点点赞 一、本文介绍 这篇文章给大家带来的是关于SCINet实现时间序列滚动预测功能的讲解&#xff0c;SCINet是样本卷积交换网络的缩写(Sam…

C# .NET Core API 注入Swagger

C# .NET Core API 注入Swagger 环境 Windows 10Visual Studio 2019(2017就有可以集中发布到publish目录的功能了吧)C#.NET Core 可跨平台发布代码,超级奈斯NuGet 套件管理dll将方法封装(据说可以提高效率,就像是我们用的dll那种感觉)Swagger 让接口可视化编写时间2020-12-09 …

【Python爬虫】网页抓取实例之淘宝商品信息抓取

之前我们已经说过网页抓取的相关内容 上次我们是以亚马逊某网页的产品为例 抓取价格、品牌、型号、样式等 该网页上价格、品牌、型号、样式等 都只有一个 如果网页上的目标内容 根据不同规格有多个 又该怎么提取呢&#xff1f; ▼如下图所示 当机身颜色、套餐、存储容量…

【MATLAB源码-第73期】基于matlab的OFDM-IM索引调制系统不同子载波数目误码率对比,对比OFDM系统。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 OFDM-IM索引调制技术是一种新型的无线通信技术&#xff0c;它将正交频分复用&#xff08;OFDM&#xff09;和索引调制&#xff08;IM&#xff09;相结合&#xff0c;以提高频谱效率和系统容量。OFDM-IM索引调制技术的基本思想…

ARM IMX6ULL 基础学习记录 / ARM 寄存器介绍

编辑整理 by Staok。 本文大部分内容摘自“100ask imx6ull”开发板的配套资料&#xff08;如《IMX6ULL裸机开发完全手册》等等&#xff09;&#xff0c;侵删。进行了精髓提取&#xff0c;方便日后查阅。过于基础的内容不会在此提及。如有错误恭谢指出&#xff01; 注&#xf…

Django ModelSerializer 实现自定义验证详解

随着 Web 开发的日益复杂化&#xff0c;对数据验证的需求也日益增加。Django REST framework 提供了一套强大的、灵活的验证系统&#xff0c;帮助开发者轻松处理各种复杂情况。本文将重点探讨 Django ModelSerializer 中如何实现自定义验证。 1. 简介 Django ModelSerializer…

openinstall携手途虎养车,赋能汽车服务数字化

近日&#xff0c;openinstall与中国领先的一站式汽车服务平台途虎养车再次续约&#xff0c;双方将开启第三年合作。过去两年&#xff0c;途虎在建设线上线下一体化数字平台的过程中&#xff0c;深度结合openinstall传参归因与渠道统计技术&#xff0c;打造出了一套高效的渠道来…

第12章 PyTorch图像分割代码框架-3:推理与部署

推理模块 模型训练完成后&#xff0c;需要单独再写一个推理模块来供用户测试或者使用&#xff0c;该模块可以命名为test.py或者inference.py&#xff0c;导入训练好的模型文件和待测试的图像&#xff0c;输出该图像的分割结果。inference.py主体部分如代码11-7所示。 代码11-7 …

【MATLAB源码-第74期】基于matlab的OFDM-IM索引调制系统不同频偏误码率对比,对比OFDM系统。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 OFDM-IM索引调制技术是一种新型的无线通信技术&#xff0c;它将正交频分复用&#xff08;OFDM&#xff09;和索引调制&#xff08;IM&#xff09;相结合&#xff0c;以提高频谱效率和系统容量。OFDM-IM索引调制技术的基本思想…

Spring -Spring之依赖注入源码解析(下)--实践(流程图)

IOC依赖注入流程图 注入的顺序及优先级&#xff1a;type-->Qualifier-->Primary-->PriOriry-->name

如何使用HadSky搭配内网穿透工具打造个人站点并公网访问

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;Cpolar杂谈、数据结构、算法模板 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 前言一. 网站搭建1.1 网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 二. 本地网页发…

[工业自动化-10]:西门子S7-15xxx编程 - PLC主站 - 信号量:数字量

目录 前言&#xff1a; 一、工业现场常见信号的分类 二、IO数字量模块 2.1 概述 2.2 PLC的数字量是24V还是5V电压&#xff1f; 2.2 数字量模块的安装与接线 2.3 数字量模的注意事项 前言&#xff1a; 一、工业现场常见信号的分类 在工业自动化领域&#xff0c;常常需要使…

3DMAX汽车绑定动画模拟插件MadCar疯狂汽车使用教程

3DMAX汽车绑定动画模拟插件MadCar疯狂的汽车&#xff0c;用于通过模拟控制来快速装配轮式车辆及其动画。这个新版本允许装配任何数量的车轮的车辆&#xff0c;以及包括摩托车在内的任何相互布置。还支持任意数量的拖车。 每个车轮和悬架都有简化的行为设置以及微调&#xff0c…

xss 通过秘籍

终极测试代码 <sCr<ScRiPt>IPT>OonN"\/(hrHRefEF)</sCr</ScRiPt>IPT> 第一关&#xff08;没有任何过滤&#xff09; 使用终极测试代码&#xff0c;查看源码 发现没有任何过滤&#xff0c;直接使用javascrupt中的alert弹框 <script>aler…