Java 14中的新特性

JDK 14于2020年3月17日发布了通用版本,Oracle的JDK/Java 14 正式 GA(General Available)。这是自从Java采用六个月一次的发布周期之后的第五次发布。

本版本总共包含如下的16个新特性:

1.JEP 305:instanceof的模式匹配(预览)
2.JEP 343:打包工具(孵化器模块)
3.JEP 345:G1的NUMA-Aware的内存分配
4.JEP 349:JFR事件流
5.JEP 352:非易失性Mapped Byte Buffers
6.JEP 358:非常实用的NullPointerException
7.JEP 359:Record(预览特性)
8.JEP 361:switch表达式(正式版)
9.JEP 362:弃用Solaris和SPARC的移植
10.JEP 363:删除CMS(即:Concurrent Mark Sweep)GC
11.JEP 364:macOS上的ZGC
12.JEP 365:Windows上的ZGC
13.JEP 366:弃用ParallelScavenge和SerialOld GC组合
14.JEP 367:删除Pack200工具和API
15.JEP 368:文本块(预览第二版)
16.JEP 370:外部内存访问API

简言之,代码更加简洁明快。其中,超实用的语法功能有:
instanceof模式匹配、Record、switch表达式、文本块和NullPointerException的提示功能。

一、增强 switch case 代码块

右箭头 ->替代冒号,支持判断合并

private static void switchCase() {
        String day = "1";
        switch (day) {
            case "周一", "周二" -> System.out.println("这里是周一和周二");
            case "周三" -> System.out.println("这里是周三");
            case "周四" -> System.out.println("这里是周四");
            default -> System.out.println("这里是周五六日");
        }

        boolean isWorkday = switch (day) {
            case "周六", "周日" -> false;
            default -> {
                yield isWeekend(day);
            }
        };


        if (isWorkday) {
            System.out.println("isWorkday 不是 周六 周日");
        }else{
            System.out.println("isworkday is false!");
        }
    }

    private static boolean isWeekend(String day) {
        if(day.equals("1")){
            return false;
        }
        return true;
    }
二、新增关键字 record(构造函数)

通过关键字record,替代创建类,写get,set,equals,hashcode等方法

public record Range(String name, int age) {}
三、增强NPE NullPointerException 错误定位

在多层级下,指出具体哪个对象取数据时为null

发布了148 篇原创文章 · 获赞 70 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/loulanyue_/article/details/105500067