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关键字介绍与注意事项
相关文章:

Java11新增特性
前言 在前面的文章中,我们已经介绍了 Java9的新增特性 和 Java10的新增特性 ,下面我们书接上文,来介绍一下Java11的新增特性 版本简介 Java 11 是 Java 平台的最新版本,于2018年9月25日发布。这个版本是自Java 8以来最重要的更新之一&…...
安卓常见设计模式13------过滤器模式(Kotlin版)
W1 是什么,什么是过滤器模式? 过滤器模式(Filter Pattern)是一种常用的结构型设计模式,用于根据特定条件过滤和筛选数据。 2. W2 为什么,为什么需要使用过滤器模式,能给我们编码带来什么好处…...
使用spark进行递归的可行方案
在实际工作中会遇到,最近有需求将产品炸开bom到底层,但是ERP中bom数据在一张表中递归存储的,不循环展开,是无法知道最底层原材料是什么。 在ERP中使用pl/sql甚至sql是可以进行炸BOM的,但是怎么使用spark展开࿰…...

Spring -Spring之依赖注入源码解析(下)--实践(流程图)
IOC依赖注入流程图 注入的顺序及优先级:type-->Qualifier-->Primary-->PriOriry-->name...
前端设计模式之【单例模式】
文章目录 前言介绍实现单例模式优缺点?后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:前端设计模式 🐱👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出…...

设备零部件更换ar远程指导系统加强培训效果
随着科技的发展,AR技术已经成为了一种广泛应用的新型技术。AR远程指导系统作为AR技术的一种应用,具有非常广泛的应用前景。 一、应用场景 气象监测AR教学软件适用于多个领域,包括气象、环境、地理等。在教学过程中,软件可以帮助学…...

文本生成高精准3D模型,北京智源AI研究院等出品—3D-GPT
北京智源AI研究院、牛津大学、澳大利亚国立大学联合发布了一项研究—3D-GPT,通过文本问答方式就能创建高精准3D模型。 据悉,3D-GPT使用了大语言模型的多任务推理能力,通过任务调度代理、概念化代理和建模代理三大模块,简化了3D建模的开发流程…...

Netty入门指南之NIO 网络编程
作者简介:☕️大家好,我是Aomsir,一个爱折腾的开发者! 个人主页:Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏:Netty应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言基础扫…...

LeetCode(6)轮转数组【数组/字符串】【中等】
目录 1.题目2.答案3.提交结果截图 链接: 189. 轮转数组 1.题目 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1…...

华为云Ascend310服务器使用
使用华为云服务器 cpu: 16vCPUs Kunpeng 920 内存:16GiB gpu:4* HUAWEI Ascend 310 cann: 20.1.rc1 操作系统:Ubuntu aarch64目的 使用该服务器进行docker镜像编译,测试模型。 已知生产环境:mindx版本为3.0.rc3&a…...

【poi导出excel模板——通过建造者模式+策略模式+函数式接口实现】
poi导出excel模板——通过建造者模式策略模式函数式接口实现 poi导出excel示例优化思路代码实现补充建造者模式策略模式 poi导出excel示例 首先我们现看一下poi如何导出excel,这里举个例子:目前想要导出一个Map<sex,List>信息,sex作为…...

自适应模糊PID控制器在热交换器温度控制中的应用
热交换器是一种常见的热能传递设备,广泛应用于各个工业领域。对热交换器温度进行有效控制具有重要意义,可以提高能源利用效率和产品质量。然而,受到热传导特性和外部环境变化等因素的影响,热交换器温度控制难度较大。本文提出一种…...

【系统救援】 Ubuntu重启失败,报错:UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY
问题定位及处理 查看错误信息:/dev/sda3 contains a file system with errors, check forced. /dev/sda3: Inodes that were part of a corrupted orphan linked list found. /dev/sda3: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY. (i.e., without -a or -p o…...

【数据结构】树与二叉树(八):二叉树的中序遍历(非递归算法NIO)
文章目录 5.2.1 二叉树二叉树性质引理5.1:二叉树中层数为i的结点至多有 2 i 2^i 2i个,其中 i ≥ 0 i \geq 0 i≥0。引理5.2:高度为k的二叉树中至多有 2 k 1 − 1 2^{k1}-1 2k1−1个结点,其中 k ≥ 0 k \geq 0 k≥0。引理5.3&…...

第九章 排序【数据结构】【精致版】
第九章 排序【数据结构】【精致版】 前言版权第九章 排序9.1 概述9.2 插入类排序9.2.1 直接插入排序**1-直接插入排序.c** 9.2.2 折半插入排序**2-折半插入排序.c** 9.2.3 希尔排序 9.3 交换类排序9.3.1冒泡排序**4-冒泡排序.c** 9.3.2 快速排序**5-快速排序.c** 9.4 选择类排…...

基于element-plus定义表格行内编辑配置化
文章目录 前言一、新增table组件二、使用步骤 前言 在 基于element-plus定义表单配置化 基础上,封装个Element-plus的table表格 由于表格不同于form组件,需自定义校验器,以下组件配置了单个校验,及提交统一校验方法,且…...

WebGL-Vue3-TS-Threejs:基础练习 / Javascript 3D library / demo
一、理解Three.js Three.js是一个用于WebGL渲染的JavaScript库。它提供了一组工具和类,用于创建和渲染3D图形和动画。简单理解(并不十分准确),Three.js之于WebGL,好比,jQuery.js之于JavaScript。 OpenGL …...

2022年12月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 有n个按名称排序的商品,使用对分查找法搜索任何一商品,最多查找次数为5次,则n的值可能为?()(2分) A.5 B.15 C.30 D.35 答案:C 答案解析:对分查找最多查找次数m与个数之间n的…...

确定性 vs 非确定性:GPT 时代的新编程范式
分享嘉宾 | 王咏刚 责编 | 梦依丹 出品 | 《新程序员》编辑部 在 ChatGPT 所引爆的新一轮编程革命中,自然语言取代编程语言,在只需编写提示词/拍照就能出程序的时代,未来程序员真的会被简化为提示词的编写员吗?通过提示词操纵 …...

【Linux奇遇记】我和Linux的初次相遇
🌈个人主页: Aileen_0v0 🔥系列专栏:Linux奇遇记系列专栏💫"没有罗马,那就自己创造罗马~" 目录 前端和后端的介绍 1.前端 2.后端 3.前后端区别 Linux在前后端开发中的角色 如何学习Linux 去进行程序开发 Linux的常见根目…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...