快捷搜索: 脱发

JDK17新特性 即将成为主流的JDK 深入了解


对于JDK17比较明显的特性 总结

Switch 语句增强

首先就是简化了Switch语句: 去掉了break及可以直接给返回值赋值。并且再匹配多个值的时候也做了调整: 这样看起来是不是很简单了。 新增了yield关键字 相当于我们使用的return 用来返回对象。

对象类型的匹配

优化字符串拼接代码

相信大家之前在代码中拼接字符串的时候一定遇到过 在jdk17就会变得很友好啦,就有了转义符。在sql,json,html中都有优化,通过三个双引号来解决

instanceof增强

在之前的版本,当使用instanceof判断之后,如果是属于类型的话,想使用还要进行强转,在之后的版本就不需要了,用法如上图。

密封类(限制继承类)

sealed 修饰父类,就是设置当前类为密封类 permits 为允许继承的子类 只有permits后面的类才能继承 注意 Dog Cat 类必须使用non-sealed或者final修饰,并且Dog Cat必须和密封类在同一个包中。

final表示子类不会再被继承,non-sealed表示子类可以再被其他类继承

密封类的优点

    安全 限制了子类的继承,避免了一些不必要的继承。 可控 因为在同一个包中 减少了代码的复杂性 易于维护

ZGC垃圾收集器

相信大家在学Jvm的时候都有听过STW(Stop The Word),就是在垃圾回收触发的时候Jvm的内存将会被冻结,所有的线程都会停止运行,发生卡顿。这是不可避免的,所以说最好的办法就是减少垃圾回收的时间。

ZGC的STW的时间是小于10ms,时间很短几乎感受不到,并且ZGC的堆内存可以设置很大甚至是T级别的,所以说触发GC的次数就会大大减少。提高性能。

添加以下JVM选项就可以开启ZGC

-XX:+UseZGC
经验分享 程序员 微信小程序 职场和发展