switch JDK14新特性

JDK12 开始引入,JDK 14成为了正式版本的功能:JEP 361: Switch Expressions (Standard)。

省略 break

原先:

1
2
3
4
5
switch (n) {
case 1:
//...
break;
}

简化后:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
switch (n) {
case 1 -> {
//...
}
}

这种写法不用担心case穿透的问题,可读性也更好了

如果只有一行代码,可以省略大括号:


```java
switch (n) {
case 1 -> System.out.println("Hello");
}

switch表达式

switch可以作为一个表达式使用了

1
2
3
4
5
6
7
8
9
10
11
12
13
// 声明变量score,并为其赋值为'C'
char score = 'C';
// 执行switch分支语句
String s = switch (score)
{
case 'A' -> "优秀";
case 'B' -> "良好";
case 'C' -> "中";
case 'D' -> "及格";
case 'F' -> "不及格";
default -> "成绩输入错误";
};
System.out.println(s);

多值匹配

case后面可以接多个值,用逗号分隔,进行多值匹配

当你把使用 箭头括号 将 冒号和break 省略之后,此时switch就不会贯穿了,但在某些情况下,程序本来就希望贯穿。这时就可以使用多值匹配

1
2
3
4
5
6
7
8
9
10
// 声明变量score,并为其赋值为'C'
char score = 'B';
// 执行switch分支语句
String s = switch (score) {
case 'A', 'B' -> "上等";
case 'C' -> "中等";
case 'D', 'E' -> "下等";
default -> "成绩数据输入非法!";
};
System.out.println(s);