前言
上一篇 Springboot3.0初体验我们了解了一些Spring Boot 3.0 的一些新特性,有很多小伙伴私信我有没有关于Java 17的新特性说明?
对于“万年Java 8”而言,确实该升级到Java 17了,毕竟Java19已经发布。这里给大家总结一些比较重要的内容
新的var关键字
相比Java 8 添加了新的var关键字,使得我们用更简洁的方式声明我们的局部变量,可通过下面两行代码作比较
List<String> list = new ArrayList<>();
var myList = new ArrayList<>();
注意的是,我们在使用var的时候,不能接收来自lambda的值,但是我们可以再lambda表达式中使用var关键字
对switch表达式进行扩展
java 17 对switch进行了增强,可以更加容易的进行分组
switch(flag){
case ONE,TWO,THREE -> true;
case FORE,FIVE -> false;
密封类(Sealed)
上面所说的switch中可能会出现“no default”的警告,这个是不是很烦恼,即使你包含了所有的选项,也依旧会有这个警告。
所以出现了密封类来替我们解决掉这个instanceof类型的检查警告。
实例匹配
java 17中,可以在if条件中创建局部变量,他会自动封装,帮我们进行强制转化
if(obj instanceof List list){
}
上面这段判断条件就是说明如果obj是List类型则创建并赋值给变量list
文本块支持
三个双引号来实现对文本块的支持""" 我是文本块 """
文本块帮助我们保留了可读的JSON或者xml信息
垃圾回收器
在Java 9 开始,G1便是默认的垃圾收集器,机关和Parallel GC相比减少了吞吐。但是G1提供了对将未使用已提交内存返回给了我们操作系统的能力的支持。
这使得你如果从YYDS的Java 8简单的切换到Java 17,则有可能会很大成都提高你的程序运行速度。
总结
还有很多新的特性与更改,这里就不一一列出了,感兴趣的话可以官网更新查看。
欢迎大家关注我的工种昊《coder练习生》