文章目录
- Switch 语句增强
- 优化字符串拼接代码
- instanceof增强
- 密封类(限制继承类)
- ZGC垃圾收集器
对于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