当前位置: 首页 > news >正文

Java8-21新特性

简介

由于Java官方最近更新越来越频繁,而长期支持维护的版本LTS版每隔几年才推出一个,大规模商用的JDK只可能选择LTS版,因此这里只简单记录JDK8,11,17,21。

jdk8

  • Lambda表达式: Lambda表达式允许在代码中直接定义匿名函数,这简化了对函数式编程的支持,使代码更简洁、更灵活。它允许在方法中传递代码块,从而实现更加灵活的编程方式。
  • Stream API: StreamAPI提供了一套声明式的方式处理数据集合的框架,可以简化数据处理的复杂性。例如,filter方法用于过滤出所有符合条件的元素,map方法用于将元素转换为另一种类型,sorted方法用于排序等。
  • 接口默认方法: Java 8允许在接口中定义默认方法,这些方法在实现类中可以被继承和覆盖,从而提供了更多的灵活性。
  • 新的日期和时间API: Java 8引入了一个新的日期和时间API,这个API提供了更多的功能,包括处理时区、时间间隔、日期时间格式化等。
  • 方法引用: 方法引用是Lambda表达式的一个简化写法,可以直接引用已存在的方法或构造器。
  • Optional类: Optional是一个容器对象,用于解决可能出现的空指针异常问题。它提供了一种更好的方式来处理可能为null的值。
  • 并行流: Java8引入了并行流,它可以在多个线程上并行地处理集合数据,从而提高程序的性能。
  • 函数式接口: 函数式接口是只有一个抽象方法的接口,可以用作Lambda表达式的目标类型。

jdk11

  • 局部变量类型推断: Java 11正式引入了局部变量类型推断,允许开发者使用var关键字来声明局部变量而无需显式指定类型。这一特性可以简化代码,减少冗余,提高代码的可读性。例如,在声明一个ArrayList时,可以使用var list = new ArrayList();而无需显式指定ArrayList类型。
  • HTTP/2的原生支持: Java 11增加了对HTTP/2的原生支持,使得开发者可以使用标准的Java API来创建HTTP/2的客户端和服务器。HTTP/2通过复用连接、头部压缩和并行请求等技术提升了网络性能,而Java 11的原生支持使得使用HTTP/2更加便捷。
  • 字符串API增强: Java 11对字符串API进行了增强,引入了一些新的方法和功能来处理字符串。例如,isBlank()方法用于检测字符串是否为空白,lines()方法用于将字符串拆分成行,以及strip()、stripLeading()和stripTrailing()等方法用于去除字符串前后的空格。
  • Epsilon垃圾收集器: Java 11引入了一种新的垃圾收集器,名为Epsilon。这是一种无操作(No-Op)的垃圾回收器,用于在测试和性能调优场景下进行使用。
  • ZGC垃圾收集器: Java 11还引入了一种全新的垃圾收集器,名为ZGC。ZGC的设计目标是实现低延迟和高吞吐量,这对于需要快速响应和低停顿时间的应用非常有用。
  • 嵌套访问控制: Java 11引入了嵌套的访问控制,允许在一个类中访问另一个类的私有成员。这增强了类的封装性,并提供了更灵活的方式来组织和访问类成员。

jdk17

  • Switch表达式的增强: Java 17在Switch表达式方面进行了增强,支持Lambda表达式和块语句。这使得Switch语句更加灵活和强大,能够处理更复杂的条件匹配和表达式返回。
  • 新的类型推断机制: Java 17改进了类型推断机制,允许在Lambda表达式和匿名内部类中使用var关键字。这有助于简化代码并减少样板代码的使用。
  • 文本块(Text Blocks): Java 17引入了文本块语法,用于更方便地处理多行字符串,无需使用连接符或转义字符。这使得定义JSON数据或编写其他格式化文本时更加简洁和易读。
  • 密封类(Sealed Classes): Java 17正式转正了密封类,这是一种更加严格和灵活的类继承机制。通过限制哪些类可以继承一个给定的类,密封类增强了代码的安全性和封装性。
  • 类型模式匹配: Java 17引入了类型模式匹配,这是一种更加灵活和简洁的模式匹配方式。它使得代码更加易读和易维护,特别适用于需要进行类型判断和变量赋值的情况。
  • 增强的垃圾回收器: Java 17引入了一种新的ZGC(Z Garbage Collector)垃圾回收器,它具有更快的响应时间和更低的暂停时间,可以更好地支持大型内存和低延迟应用程序。
  • 增强的数据类型: Java 17引入了一些新的数据类型,如预期类型和简单类型,这些类型可以提高编程效率并减少代码量。
  • 改进的安全性: Java 17引入了一些新的安全功能,如默认封装JDK内部类和弃用安全管理器等,以更好地保护应用程序免受潜在的攻击和漏洞。

jdk21

  • 模式匹配 instanceof 操作符: Java 21引入了新的模式匹配 instanceof 操作符,这使得开发者可以通过模式匹配来简化类型转换的代码,提高了代码的可读性和可维护性。
  • 本地模式变量: Java 21允许在方法体内使用本地变量的模式,这样的设计让代码更加简洁易读。
  • switch 表达式的增强: Java 21对 switch 表达式进行了进一步的增强,它支持使用箭头语法和多个表达式作为一个分支的结果,从而提供了更强大和灵活的分支处理能力。
  • raw 字符串: Java 21引入了 raw 字符串,它可以在字符串中保留原始格式,无需再使用转义字符,使得字符串处理更加直观和方便。
  • 数字操作器的改进: Java 21对于数字操作器进行了改进,包括提供了新的数值范围检查操作、新的数值运算方法等,提升了数字处理的效率和准确性。
  • 增强的异步编程: Java 21在异步编程方面进行了改进,提供了更加强大和简化的异步编程功能,包括 CompletableFuture 的新方法和改进的异步流,使得异步编程更加简洁和高效。
  • 字符串模板: Java 21引入了字符串模板,为字符串拼接提供了更灵活、更直观的方式,使得字符串操作更为便捷。
  • 顺序集合: Java 21引入了新的接口来表示具有定义相遇顺序的集合,每个这样的集合都有定义明确的元素顺序,并提供了统一的应用程序接口,用于访问和处理其元素。
  • 记录模式和类型模式: Java 21中的记录模式和类型模式可以嵌套,以实现更强大、声明性和可组合的数据导航和处理形式。

相关文章:

Java8-21新特性

简介 由于Java官方最近更新越来越频繁,而长期支持维护的版本LTS版每隔几年才推出一个,大规模商用的JDK只可能选择LTS版,因此这里只简单记录JDK8,11,17,21。 jdk8 Lambda表达式: Lambda表达式…...

NodeJS系列面试题

大家好,我是有用就扩散,有用就点赞。 有没有写过Koa中间件,说一下中间件原理,介绍下自己写过的中间件 koa本来就是一个轻量级框架,本身支持的功能并不多,功能都是通过中间件来实现不同的需求。开发者可以通…...

QXlsx读写excel

QXlsx读写excel 安装 QXlsx使用 qmake使用 CMake 基本用法1. 写入 Excel 文件2. 读取 Excel 文件 详细用法1. 设置单元格样式2. 合并单元格3. 创建图表4. 设置列宽和行高 完整示例 QXlsx 是一个用于在 Qt 应用中读写 Excel 文件的第三方库。它提供了丰富的 API,可以…...

昇思25天学习打卡营第13天 | mindspore 实现 ShuffleNet 图像分类

1. 背景: 使用 mindspore 学习神经网络,打卡第 13 天;主要内容也依据 mindspore 的学习记录。 2. 迁移学习介绍: mindspore 实现 ShuffleNet 图像分类; ShuffleNet 基本介绍: ShuffleNetV1 是旷视科技提…...

C语言超市管理系统UI界面

以下是部分代码。需要源码的私信 #include<easyx.h> #include<stdio.h> #include<stdlib.h>#define width 1280 #define height 840 #define font_w 35 //字体宽度 #define font_h 90 //字体高度typedef struct node {char name[100];//名字char number[1…...

BUUCTF逆向wp [MRCTF2020]Xor

第一步 查壳&#xff0c;该题是32位&#xff0c;无壳。 第二步 跟进main&#xff0c;发现反汇编不了 通过下图我们可以发现一串类似字符串的东西 第三步 我们看一下汇编 我们可以得到这些信息&#xff1a;flag的长度为27&#xff08;下面是对本条指令cmp edx 27指令的应用…...

Windows版MySQL5.7解压直用(如何卸载更换位置重新安装)

文章目录 停止mysql进程及服务迁移整个mysql文件夹删除data重启计算机重新安装 停止mysql进程及服务 net stop mysql mysqld -remove mysql迁移整个mysql文件夹 删除data 重启计算机 shutdown -r -t 0重新安装 https://blog.csdn.net/xzzteach/article/details/137723185...

详解数据结构之二叉树(堆)

详解数据结构之二叉树(堆) 树 树的概念 树是一个非线性结构的数据结构&#xff0c;它是由 n(n>0)个有限节点组成的一个具有层次关系的集合&#xff0c;它的外观形似一颗倒挂着的树&#xff0c;根朝上&#xff0c;叶朝下&#xff0c;所以称呼为树。每颗子树的根节点有且只…...

Linux----Mplayer音视频库的移植

想要播放视频音乐就得移植相关库到板子上 Mplayer移植需要依赖以下源文件&#xff1a;(从官网获取或者网上) 1、zlib-1.2.3.tar.gz &#xff1a;通用的内存空间的压缩库。 2、libpng-1.2.57.tar.gz :png格式图片的压缩或解压库 3、Jpegsrc.v9b.tar.gz : jpeg格式图片的压…...

STM32测测速---编码电机读取速度的计算

1、首先先了解一下计算的公式 速度计算&#xff1a; 轮胎每转一圈的脉冲数取决于编码器的分辨率&#xff0c;可由下面公式进行计算&#xff1a; PPR是电机的线数 以GA25-370电机为例。 图片来源&#xff1a;第四节&#xff1a;STM32定时器&#xff08;4.JGA25-370霍尔编码器…...

【已解决】服务器无法联网与更换镜像源

目录 问题描述&#xff1a; 1.修改网卡的 DNS1 和 DNS2 2.修改DNS列表 3.重启网络服务 4.切换镜像源 4.1备份原镜像源 4.2下载阿里云镜像源 4.3替换无法使用的域名 4.4刷新软件包缓存 4.5其他镜像源 5.阿里云镜像源开发者社区说明 6.阿里云DNS网址 7.DNS域名服务器…...

android11 屏蔽usb通过otg转接口外接鼠标设备

硬件平台&#xff1a;QCS6125 软件平台&#xff1a;Android11 需求&#xff1a;Android设备通过接usb转接线连接鼠标功能屏蔽。 考虑到屏蔽的层面可以从两个层面去做&#xff0c;一个是驱动层面不识别&#xff0c;一个就是Android系统层面不识别加载&#xff0c;本篇只讲后者。…...

HAL库源码移植与使用之RTC时钟

实时时钟(Real Time Clock&#xff0c;RTC)&#xff0c;本质是一个计数器&#xff0c;计数频率常为秒&#xff0c;专门用来记录时间。 普通定时器无法掉电运行&#xff01;但RTC可由VBAT备用电源供电&#xff0c;断电不断时 这里讲F1系列的RTC 可以产生三个中断信号&#xff…...

GIT命令学习 一

&#x1f4d1;打牌 &#xff1a; da pai ge的个人主页 &#x1f324;️个人专栏 &#xff1a; da pai ge的博客专栏 ☁️宝剑锋从磨砺出&#xff0c;梅花香自苦寒来 ☁️运维工程师的职责&#xff1a;监…...

VS+QT 打包可执行文件.exe

切换成release版本&#xff0c;同时更改项目属性中release配置下的各个属性&#xff0c;确保匹配 重新生成解决方案&#xff0c;将生成的.exe复制到一个空白文件夹中 执行&#xff1a; cd D:\QT\5.12.10\msvc2015_64\binwindeployqt C:\Users\DELL\Desktop\serials\MainWind…...

Android笔试面试题AI答之Activity(2)

答案仅供参考&#xff0c;大部分为文心一言AI作答 目录 1. 请介绍一下Activity 生命周期&#xff1f;1. 完全生命周期2. 可见生命周期3. 前台生命周期4. 配置更改5. 特殊场景 2. 请介绍一下横竖屏切换时Activity的生命周期变化&#xff1f;1.默认行为&#xff08;未设置androi…...

来自Transformers的双向编码器表示(BERT) 通俗解释

来自Transformers的双向编码器表示&#xff08;BERT&#xff09; 目录 1. 从上下文无关到上下文敏感2. 从特定于任务到不可知任务3. BERT&#xff1a;把两个最好的结合起来4. BERT的输入表示5. 掩蔽语言模型&#xff08;Masked Language Modeling&#xff09;6. 下一句预测&am…...

代码随想录第十六天|贪心算法(2)

目录 LeetCode 134. 加油站 LeetCode 135. 分发糖果 LeetCode 860. 柠檬水找零 LeetCode 406. 根据身高重建队列 LeetCode 452. 用最少数量的箭引爆气球 LeetCode 435. 无重叠区间 LeetCode 763. 划分字母区间 LeetCode 56. 合并区间 LeetCode 738. 单调递增的数字 总…...

花几千上万学习Java,真没必要!(二十二)

1、final关键字&#xff1a; 测试代码1&#xff1a; package finaltest.com;public class FinalBasicDemo {public static void main(String[] args) {// final修饰基本数据类型变量final int number 5;// 尝试修改number的值&#xff0c;这将导致编译错误// number 10; // …...

在RK3568上如何烧录MAC?

这里我们用RKDevInfoWriteTool 1.1.4版本 下载地址&#xff1a;https://pan.baidu.com/s/1Y5uNhkyn7D_CjdT98GrlWA?pwdhm30 提 取 码&#xff1a;hm30 烧录过程&#xff1a; 1. 解压RKDevInfoWriteTool_Setup_V1.4_210527.7z 进入解压目录&#xff0c;双击运行RKDevInfo…...

3步快速上手:用dupeGuru轻松清理重复文件,释放宝贵磁盘空间

3步快速上手&#xff1a;用dupeGuru轻松清理重复文件&#xff0c;释放宝贵磁盘空间 【免费下载链接】dupeguru Find duplicate files 项目地址: https://gitcode.com/gh_mirrors/du/dupeguru 你是否经常为电脑中堆积如山的重复文件而烦恼&#xff1f;照片、文档、音乐文…...

【高光谱图像数据处理实战】基于Python的ENVI图像交互式裁剪与光谱数据预处理

前言在处理高光谱图像数据&#xff08;Hyperspectral Imaging&#xff0c; HSI&#xff09;时&#xff0c;我们常常需要面对两个核心问题&#xff1a;一是如何从庞大的三维数据立方体&#xff08;Data Cube&#xff09;中高效、准确地提取感兴趣区域&#xff08;ROI&#xff09…...

七、数据与存储

一、 数据库操作 1、QSqlDatabase 连接管理深度剖析 连接生命周期与内部机制 QSqlDatabase 的连接管理不走寻常路——它内部是一个全局静态哈希表,存储着所有命名连接。这带来了几个重要的设计约束: // QSqlDatabase 内部实现的核心数据结构(简化还原)// Qt 源码中通过 QH…...

创业团队如何利用Taotoken进行多模型选型与成本控制

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 创业团队如何利用Taotoken进行模型选型与成本控制 对于初创团队的技术负责人而言&#xff0c;在有限的预算下既要满足快速迭代的产…...

一文搞懂JTT1078:车载视频监控协议科普+开发入门

之前聊过JTT808&#xff0c;很多朋友私信问我&#xff0c;车载监控里的视频画面、语音对讲靠什么实现的&#xff1f;答案很简单——JTT1078协议。如果说JTT808是车载监控的“骨架”&#xff0c;负责定位和基础状态传输&#xff0c;那JTT1078就是“神经”&#xff0c;专门管音视…...

深入解析Trust Layer:声明式信任管理在微服务架构中的工程实践

1. 项目概述与核心价值最近在开源社区里&#xff0c;一个名为openclawunboxed/trust-layer的项目引起了我的注意。乍一看这个标题&#xff0c;可能会觉得有些抽象——“信任层”&#xff1f;这听起来像是一个偏学术或理论性的概念。但当我深入其代码仓库和设计文档后&#xff0…...

电子显微镜波传递函数与Ptychographic重建技术解析

1. 电子显微成像中的波传递函数解析 波传递函数&#xff08;Wave Transfer Function, WTF&#xff09;是理解电子显微镜成像机制的核心数学工具。这个复数值函数描述了电子波与样品相互作用后&#xff0c;在空间频率域中的相位和振幅变化情况。在透射电子显微镜&#xff08;TEM…...

Windows平台APK部署技术探索:轻量级安卓应用安装实践指南

Windows平台APK部署技术探索&#xff1a;轻量级安卓应用安装实践指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在跨平台应用开发与部署日益普及的今天&#xff0…...

实战配置指南:5个技巧让PlayStation手柄在Windows上发挥专业级性能

实战配置指南&#xff1a;5个技巧让PlayStation手柄在Windows上发挥专业级性能 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows DS4Windows是一款功能强大的开源控制器兼容工具&#xff0c…...

Task GCP终极指南:如何在谷歌云平台上实现高效任务调度与自动化构建 [特殊字符]

Task GCP终极指南&#xff1a;如何在谷歌云平台上实现高效任务调度与自动化构建 &#x1f680; 【免费下载链接】task A fast, cross-platform build tool inspired by Make, designed for modern workflows. 项目地址: https://gitcode.com/gh_mirrors/ta/task 在现代化…...