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

从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

http://www.lryc.cn/news/254509.html

相关文章:

  • js实现富文本
  • 每日OJ题_算法_双指针②_力扣1089. 复写零
  • C++——红黑树
  • 【神化世界】asp网页500内部服务器错误的解决方法
  • java面试题6
  • (03)vite 处理 css
  • 阿里云上传文件出现的问题解决(跨域设置)
  • 利用JavaFX生成验证码图片
  • 6-55.汽车类的继承
  • SCI论文——respectively用法
  • 解决方案 | 法大大电子签约加速农牧业数字化进程
  • 设计模式之GoF23介绍
  • UDP协议实现群聊
  • lombok原理 @Slf4j 怎么生成get set log
  • 【目标检测】进行实时检测计数时,在摄像头窗口显示实时计数个数
  • SpringBoot第56讲:SpringBoot集成文件 - 集成EasyExcel之Excel导入导出
  • python3安装lifelines
  • shell命令学习(1)——(待完善)
  • 机器的深度强化学习算法可以被诱导
  • 学生成绩管理系统(Java)
  • Modbus数据采集模块是什么?
  • 【网络安全】下载并安装 kali 的虚拟机 版本
  • JREBEL 热部署原理
  • 履带吊,笔记
  • WPF转换器Convert
  • 【刷题】【力扣牛客】反转链表的五种方式——Java
  • 使用Java网络编程,窗口,线程,IO,内部类等实现多人在线聊天1.0
  • 相关教程test
  • mysql知识分享(包含安装卸载)(一)
  • Google Guava 反射工具使用详解