你需要了解的Java 17新特性

前言

上一篇 Springboot3.0初体验我们了解了一些Spring Boot 3.0 的一些新特性,有很多小伙伴私信我有没有关于Java 17的新特性说明?

对于“万年Java 8”而言,确实该升级到Java 17了,毕竟Java19已经发布。这里给大家总结一些比较重要的内容

新的var关键字

相比Java 8 添加了新的var关键字,使得我们用更简洁的方式声明我们的局部变量,可通过下面两行代码作比较

List 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练习生》

你可能感兴趣的:(java,java,jvm,开发语言)