美文网首页程序员
Java学习26:JDK14新特性

Java学习26:JDK14新特性

作者: 苦难_69e0 | 来源:发表于2021-01-11 17:01 被阅读0次

    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新特性

        本文链接:https://www.haomeiwen.com/subject/rvtciktx.html