从Java8升级到Java17,特色优化点

从Java8升级到Java17,特色优化点

  • 一、局部变量类型推断
  • 二、switch表达式
  • 三、文本块
  • 四、Records
  • 五、模式匹配instanceof
  • 六、密封类
  • 七、NullPointerException

从Java 8 到 Java 20,Java 已经走过了漫长的道路,自 Java 8 以来,Java 生态系统发生了很多变化。
最显着的变化是 Java 的发布节奏,Java 8 于 2014 年发布,Java 17 于 2021 年发布,这两个版本之间相隔了 7 年。
Java17是一个长期支持(LTS)的版本,会有更稳定和持久的维护和更新。

自从Java 8以来,Java增加了很多新特性,但并不是所有的特性都有用和受欢迎。如果你已经使用Java 8很长时间了,觉得需要了解一下Java的新特性,那么本文列出的自Java 8以来Java增加的最受开发者欢迎的特性,你可以用它作为参考来迁移。

一、局部变量类型推断

这是自 Java 8 以来添加到 Java 中的最受欢迎的功能之一。
它允许你在不指定类型的情况下声明局部变量,其类型是从表达式的右侧推断出来的。
此功能也称为var类型,与js中的变量声明很相似。

在示例所示,两个程序将生成相同的输出,但在 Java 10 的情况下,我们使用而var不是指定类型。
在这里插入图片描述

二、switch表达式

在 Java 14 中使用 switch 表达式时,你不必使用关键字 break 来跳出 switch 语句或 return 在每个 switch case 上使用关键字来返回值;
相反,你可以返回整个 switch 表达式。这种增强的 switch 表达式 使整体代码看起来更清晰,更易于阅读。
在这里插入图片描述

三、文本块

文本块是 Java 15 中添加的一项新功能。
它允许你在不使用转义序列的情况下创建多行字符串。
这在你创建 SQL 查询或 JSON 字符串时非常有用。
在下面的示例中,你可以看到使用文本块时代码看起来更加简洁。

在这里插入图片描述

四、Records

记录Records是添加到 Java 14 的一项新功能。
允许你创建用于存储数据的类,类似于 POJO 类,但代码少得多。
大多数开发人员使用 Lombok 生成 POJO 类,但是有了记录,你就不需要使用任何第三方库。
在下面的示例中,你可以看到创建记录类所需的代码非常少。
在这里插入图片描述

五、模式匹配instanceof

模式匹配 instanceof 是 Java 16 中添加的一项新功能。
允许你将 instanceof 运算符用作返回已转换对象的表达式。当使用嵌套的 if-else 语句时,这非常有用。
在示例中,可以看到如何使用 instanceof 运算符来捕获 Employee 对象,而不是进行显式转换。
在这里插入图片描述

六、密封类

密封类是添加到 Java 17 中的一项新功能。
允许你将类或接口的继承限制为一组有限的子类。当你想将类或接口的继承限制为一组有限的子类时,这非常有用。
密封类的子类可以声明为 finalnon-sealedfinal 子类不能进一步扩展,而非密封子类可以进一步扩展。
在示例中,可以看到如何使用 sealed 关键字将类的继承限制为一组有限的子类。
在这里插入图片描述

七、NullPointerException

NullPointerExceptions 是 Java 14 中添加的一项新功能。
允许你获取有关 NullPointerExceptions 的具体信息,这在调试时非常有用。
在示例中,可以看到相同的代码出现 NullPointerExceptions 后,在 Java 8 和 Java 14 中生成不同的结果。
很明显,在 Java 14 中,你可以获得有关异常的更多信息,这更有利于排查问题。
这个功能才是广大同胞们迫切需要的功能啊。

在这里插入图片描述

如果你想了解更多关于 Java 的新特性,可以查看下面的链接。
JDK 10 功能:https://openjdk.org/projects/jdk/10
JDK 11 功能:https://openjdk.org/projects/jdk/11
JDK 12 功能:https://openjdk.org/projects/jdk/12
JDK 13 功能:https://openjdk.org/projects/jdk/13
JDK 14 功能:https://openjdk.org/projects/jdk/14
JDK 15 功能:https://openjdk.org/projects/jdk/15
JDK 16 功能:https://openjdk.org/projects/jdk/16
JDK 17 功能:https://openjdk.org/projects/jdk/17

参考来源:程序小媛
https://mp.weixin.qq.com/s/C4SoqNWyksf8Y4EaDjXbNg

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

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

相关文章

预赛->省赛->国赛 我的全国软件测试大赛之旅

学习推荐 Web 功能测试:Javaselenium3 web自动化测试实战 性能测试:看慕测官方的视频,这里会用就行,不用学太多 自己根据视频写的:Web自动测试常用代码(Java版) Web没啥难的,主要拼手速,其…

出错:I/O文件读取JAVA

I/O文件读取 /** author:xiaowang* date:2023/12/6* demand:读取java1班的数据* * */ package homework;import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException;public class FileReadTest {public static void main(String[] args) …

Windows系统上如何搭建Linux操作系统

一、准备工作 1,VMware安装包 2,Centos IOS镜像 3,finalshell安装包 阿里云盘下载地址: https://www.alipan.com/s/uSQsWn15E3W 二,VMware安装 1,新建虚拟机 2,选择下一步 3,…

小航助学题库白名单竞赛考级蓝桥杯等考scratch(14级)(含题库教师学生账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号) 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)

每日一题 1466. 重新规划路线(树,DFS)

根据 connections 建立无向树从 0 开始深搜,每次调用 dfs 时判断路径方向是否正确 class Solution:def minReorder(self, n: int, connections: List[List[int]]) -> int:to defaultdict(set)edge defaultdict(list)for con in connections:edge[con[0]].appe…

Numpy 实现ID3决策树

Numpy 实现ID3决策树 # 定义节点类 二叉树 class Node:def __init__(self, rootTrue, labelNone, feature_nameNone, featureNone):self.root rootself.label labelself.feature_name feature_nameself.feature featureself.tree {}self.result {label:: self.label,fea…

HarmonyOS学习--TypeScript语言学习(一)

注意:这只是我学习的笔记!!! 注意:这只是我学习的笔记!!! 注意:这只是我学习的笔记!!! 本章目录如下: 一、TypeScript语言…

汽车防爆膜行业研究:中国发展前景及市场投资分析

随着汽车保有量的不断增长,汽车的维修和保养等服务市场规模也会快速提升。业内人士表示,今年以来,越来越多的企业开始发力这一市场,汽车后市场的竞争区域也从大中城市向县域城市下沉。 防爆膜就是在车的玻璃上安装一层保护膜&…

各大期刊网址

1.NeurIPS,全称Annual Conference on Neural Information Processing Systems, 是机器学习领域的顶级会议,与ICML,ICLR并称为机器学习领域难度最大,水平最高,影响力最强的会议! NeurIPS是CCF 推…

Android 背景边框集合

效果图 代码 <?xml version"1.0" encoding"utf-8"?> <shape xmlns:android"http://schemas.android.com/apk/res/android" android:shape"rectangle"><solid android:color"#ffffff" /><stroke and…

Doris 编译报错 Error: flex version (2.5.37) must be greater than or equal to 2.6.0

Doris 编译过程报错 Error: flex version (2.5.37) must be greater than or equal to 2.6.0yum update flex 不生效 下载flex 安装包 https://github.com/westes/flex/releases解压 tar -xvf flex-2.6.4.tar

java优雅写法01 -业务判断并断言-Assert工具类

断言的理解: 断言他满足条件不抛异常; 不满足断言时产生异常&#xff1b; 业务需求&#xff1a;判断某个查询对象为空&#xff0c;直接返回错误信息 常见写法&#xff1a; if (ObjectUtil.isNull(object)){ return XXXX }Assert 写法 这句代码的意思是 如果对象为空就提示并返…

你了解架构图吗?

技术界的扛把子架构图&#xff0c;你了解吗&#xff1f;今天我们就来聊聊它 什么是架构图呢&#xff1f; 系统架构是概念的体现&#xff0c;是对物/信息的功能与形式元素之间的对应情况所做的分配&#xff0c;是对元素之间的关系以及元素同周边环境之间的关系所做的定义。 架构…

微信小程序访问不了阿里云oss图片链接解决办法

以下都有可能导致访问不了oss图片 1.小程序没有加访问白名单 这个需要前端搞,加上白名单,如果是域名加域名白名单,ip的话加ip白名单 2.阿里云设置域名白名单 打开bucket列表,选择对应的bucket 配置这个白名单,配置好以后,开发者工具可以预览了,手机端预览不了,查看自己的路…

[AbutionGraph开发文档]时序图谱数据库-流式图计算

文档地址&#xff1a;https://thutmose.gitee.io/abution-graph AbutionGraph是一款端到端数据实时分析的图谱数据库&#xff0c;实时(写入实时、决策分析实时、流式图计算实时)&#xff1a; 基于历史数据构建的指标模型实时查询&#xff1b;接入流式数据并实时更新业务指标&a…

[足式机器人]Part2 Dr. CAN学习笔记-数学基础Ch0-6复数Complex Number

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-数学基础Ch0-6复数Complex Number x 2 − 2 x 2 0 ⇒ x 1 i x^2-2x20\Rightarrow x1\pm i x2−2x20⇒x1i 代数表达&#xff1a; z a b i , R e ( z ) a , I m ( z ) b zabi,\mathrm{Re}…

【ARM Coresight 系列 2 文章 -- Trace32 对 APBIC 地址的配置 介绍】

文章目录 APBIC RomtableAPBIC Romtable 图 1 APBIC 网络图 如上图所示,如果想通过Trace32/DS-5 去访问 AP, 这个时候需要怎么做呢?可以看到 APBIC 中ROMTABLE 中 APB-AP 的偏移是0x00200000,所以 APB-AP的基地址为 0x2b000000 + 0x00200000,又从 APB-AP 的romtable 中可以…

基于ssm在线云音乐系统的设计与实现论文

摘 要 随着移动互联网时代的发展&#xff0c;网络的使用越来越普及&#xff0c;用户在获取和存储信息方面也会有激动人心的时刻。音乐也将慢慢融入人们的生活中。影响和改变我们的生活。随着当今各种流行音乐的流行&#xff0c;人们在日常生活中经常会用到的就是在线云音乐系统…

item_get_app_pro-根据ID取商品详情原数据接入参数和返回值说明

参数说明 pinduoduo.item_get_app_pro 公共参数 名称类型必须描述keyString是调用key&#xff08;申请调用免费测试&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_shop等]cache…

python中dir函数和help函数的用法和区别

背景 在python的学习和使用中&#xff0c;常常会涉及到很多第三方库的安装和使用&#xff0c;有时候我们需要借助某些第三方库的文档帮助我们更好更快速的学习第三方库中的函数或者类的使用方法&#xff0c;除了直接阅读说明文档外&#xff0c;借助于python的dir()函数和help()…