Java学习26:JDK14新特性

2020年3月17日,Oracle公司正式发布了JDK14。共新增了16项新特性。

新的语言特性

新的语言特性有7项,包括3项正式特性与4项非正式特性。

switch表达式(JEP361)

switch1.png
switch2.png
switch3.png

友好的空指针异常(JEP358)

image.png

早期的JDK运行后提示空指针异常:java.lang.NullPointerException at Test02NullPointerException .main( Test02NullPointerException .java:7)
无法确定是到底car为空还是engine为空

在JDK14版本中,开启参数
-XX:ShowCodeDetailsInExceptionMessages
可以更好的指定哪个底放出现异常

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

在JDK14中,新增了特地给JDK的文件映射模式,可以使用FileChannel创建引用非易失性存储器的MappedByteBuffer。

record(JEP359)

record提供了一种紧凑的语法来声明类,这是Preview预览功能。
record可以看作是一种新的类型,类似于枚举,只需要使用record定义名称及它的属性即可,如:
record Person(String name,int age){}
系统会自动生成Person的标准的成员:
Person 中每个属性都定义为private final 修饰的字段。
每个属性都提供公共的getter方法。
有一个公共构造方法,构造方法签名与声明相同,即 Person(String name,int age)
会生成equals()/hashCode()方法的实现
会生成toString()方法的重写

注意:record 不能继承,record类隐含是final类即也不能被继承。

编译:java -enable-preview -source 14 类名.java
运行:java -enable-preview 类名

instanceof模式匹配(JEP305)

在JDK14中,通过对instanceof运算符进行模式匹配来增强java语言,这是Preview预览功能。

早期.png
JDK14.png

文本块(JEP368)

在JDK13中引入了文本块的预览,在JDK14中进行二次预览,为了更方便的对HTML,XML,JSON,SQL这些字符串进行更好的阅读和维护。

文本块.png

外部存储器API(JEP370)

外部存储器API主要包含三个类:
MemorySegment
MemoryAddress
MemoryLayout

该功能是作为孵化器模块引入的,为了让更多的Java社区的人员参与测试与反馈。

垃圾回收修改

G1的NUMA内存分配优化(JEP345)

non-uniform memory access 非统一的内存访问

JFR事件流(JEP349)

JDK flight Recorder

移除CMS垃圾收集器(JEP363)

弃用Parallel Scavenge和Serial Old垃圾收集算法(JEP366)

MacOS系统上的ZGC实验(JEP364)

Windows系统上的ZGC实验(JEP365)

移除包和功能

弃用Solaris和SPARC端口(JEP362)

移除Pack200(JEP367)

添加了一些工具

打包工具(JEP343)

想创建一个用于打包的独立的java工具,处于孵化阶段。

你可能感兴趣的:(Java学习26:JDK14新特性)