JDK13特性
一、JAVA13概述
2019年9月17日,国际知名的OpenJDK开源社区发布了Java编程语言环境的最新版本OpenJDK13。
Features:总共有5个新的JEP(JDK Enhancement Proposals):
http://openjdk.java.net/projects/jdk/13/
Features:
350:Dynamic CDS Archives:动态CDS档案
351:ZGC: Uncommit Unused Memory:ZGC:取消使用未使用的内存
353:Reimplement the Legacy Socket API:重新实现旧版套接字API
354:Switch Expressions (Preview):switch表达式(预览)
355:Text Blocks (Preview):文本块
二、语法层面特性
1.switch表达式(预览)
在JDK 12中引入了switch表达式作为预览特性。JDK 13提出了第二个switch表达式预览。JEP 354修改了这个特性,它引入了yield语句,用于返回值。这意味着,switch表达式(返回值)应该使用yield, switch语句(不返回值)应该使用break。
在 JDK 12中有一个,但是要进行一个更改:要从 switch 表达式中生成一个值 break,要删除with value语句以支持ayield 声明。目的是扩展,switch 以便它可以用作语句或表达式,因此两个表单既可以使用 case … : 带有连贯符号的传统标签,也可以使用新 case … -> 标签,而不需要通过,还有一个新的语句用于从 switch 表达式中产生值。这些更改将简化编码并为模式匹配做好准备。
在以前,我们想要在switch中返回内容,还是比较麻烦的,一般语法如下:
String x = "3";
int i;
switch (x) {
case "1":
i=1;
break;
case "2":
i=2;
break;
default:
i = x.length();
break;
}
System.out.println(i);
在JDK13中使用以下语法:
String x = "3";
int i = switch (x) {
case "1" -> 1;
case "2" -> 2;
default -> {
yield 3;
}
};
System.out.println(i);
或者:
String x = "3";
int i = switch (x) {
case "1":
yield 1;
case "2":
yield 2;
default:
yield 3;
};
System.out.