java14 lts_Java14版本特性【一文了解】

5c90d7dd7156d28a658aacd5adb1a566.png

「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」。

当然 不论新老朋友 我相信您都可以 从中获益。如果觉得 「不错」 的朋友,欢迎 「关注 + 留言 + 分享」,文末有完整的获取链接,您的支持是我前进的最大的动力!

特性总览

以下是 Java 14 中的引入的部分新特性。关于 Java 14 新特性更详细的介绍可参考这里。

语言及特性更改:

Switch 表达式-标准(JEP 361)

instanceof 的模式匹配-预览(JEP 305)

有用的 NullPointerExceptions(JEP 358)

record-预览(JEP 359)

文本块-预览(JEP 368)

JVM 更改:

针对 G1 NUMA 感知内存分配的优化(JEP 345)

删除并发标记扫描(CMS)垃圾收集器(JEP 363)

JFR 事件流(JEP 349)

macOS 上的 ZGC-实验性(JEP 364)

Windows 上的 ZGC-实验性(JEP 365)

弃用 ParallelScavenge + SerialOld 的 GC 组合(JEP 366)

其他特性:

打包工具(JEP 343)

非易失性映射字节缓冲区(JEP 352)

弃用 Solaris 和 SPARC 端口(JEP 362)

删除 Pack200 工具和 API(JEP 367)

外部存储器访问 API(JEP 370)

一. Switch 表达式-标准(JEP 361)

在上两个版本中保留的预留功能,如今终于在 Java 14 中获得了永久性的地位。

Java 12 为表达是引入了 Lambda 语法,从而允许使用多个大小写标签进行模式匹配,并防止出现导致冗长代码的错误。它还强制执行穷尽情况,如果没有涵盖所有输入情况,则会抛出编译错误。

Java 13 在第二个预览版本使用了 yield 替代了原有的 break 关键字来返回表达式的返回值。

Java 14 现在终于使这些功能成为了标准:

String result = switch (day) {

case "M", "W", "F" -> "MWF";

case "T", "TH", "S" -> "TTS";

default -> {

if (day.isEmpty()) {

yield "Please insert a valid day.";

} else {

yield "Looks like a Sunday.";

}

}

};

System.out.println(result);

注意,yield 不是 Java 中的新关键字,它仅用于 Switch 表达式中。

二. instanceof 的模式匹配-预览(JEP 305)

在 Java 14 之前,我们用于 instanceof-and-cast 检查对象的类型并将其转换为变量。

if (obj instanceof String) { // instanceof

String s = (String) obj; // cast

if("jdk14".equalsIgnoreCase(s)){

//...

}

}else {

System.out.println("not a string");

}

现在,在 Java 14 中,我们可以像这样重构上面的代码:

if (obj instanceof String s) { // instanceof, cast and bind variable in one line.

if("jdk4".equalsIgnoreCase(s)){

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值