关于Java17的新特性介绍,网上的资料很多,那么我们为什么要学习和升级java版本到17呢?
其实java17发布已经有很长一段时间了(2021年9月发布),也不算是一个很新的事物, 只不过由于很多企业项目因为历史遗留等的原因java代码版本还停留在JDK8、11的时代。
我们简单回顾下JDK的版本历史:
JDK8 LTS版本 2014年3月发布
JDK11 LTS版本 2018年9月发布
JDK17 LTS版本 2021年9月发布
JDK21 LTS 版本 2023年9月发布
...
其实目前业界的很多新出框架版本最低的JDK版本要求都是17了 ,比如:
SpringFramework6.x 最低支持JDK版本:17 !
SpringBoot3.x 最低支持JDK版本:17!
SpringCloud2022.x 、2023.x 最低支持JDK版本:17 !
SpringCloud-alibaba2022.x、2023.x 最低支持JDK版本:17 !
Nacos3.x 最低支持JDK版本:17!
Doris3.x 及以后版本 最低支持JDK版本:17 !
...
如果想要学习这些新的框架,那么首先至少需要将我们的JDK版本升级到17!
接下来笔者着重介绍下JAVA17新特性,比较实用的几个点:
1、""" 文本块表达式(三个引号)
//JAVA17 新特性: 文本块
@Test
public void test1(){
// String html = "<html>\n" +
// " <body>\n" +
// " <h1>Hello, World!</h1>\n" +
// " </body>\n" +
// "</html>";
// System.out.println(html);
String html= """
<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>
""";
System.out.println(html);
}
以前我们写一段带换行的字符串(例如一段json或html内容)总是会写一堆恶心的"+"号及"\n换"行符号。现在我们用JAVA17直接用"""表示文本开始,"""表示文本结束即可,非常地直观便捷!
2、instanceof 模式匹配增强
//JAVA17 新特性: instanceof 模式匹配增强
@Test
public void test2(){
// Object obj = "hello";
// if(obj instanceof String){
// String s =(String) obj;
// System.out.println(s);
// }
//无需再进行强制类型转换
Object obj = "hello";
if (obj instanceof String s) {
System.out.println(s);
}
}
在JAVA17中instanceof 无需进行显示的强制类型转换了。
3、Switch Expressions 增强
// JAVA17 新特性: Switch Expressions 增强
@Test
public void test3(){
// int dayOfWeek = 3;
// String dayName;
// switch (dayOfWeek) {
// case 1:
// dayName = "Monday";
// break;
// case 2:
// dayName = "Tuesday";
// break;
// case 3:
// dayName = "Wednesday";
// break;
// default:
// dayName = "Unknown";
// }
// System.out.println(dayName); // 输出: Wednesda
int dayOfWeek = 3;
String dayName = switch (dayOfWeek) {
case 0,1 -> "Monday";
case 2 -> "Tuesday";
case 3 -> "Wednesday";
default -> "Unknown";
};
System.out.println(dayName); // 输出: Wednesday
}
JAVA17中,switch... case...的写法更丝滑流畅。
还有更多的特性支持,比如密封类、记录类、空指针异常改进、ZGC垃圾回收器正式使用、新的伪随机数生成器RandomGenerator 等等就不一一介绍了。
下一篇:没有了


阅读排行


Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1