Java14 switch 表达式
简介
- 新版没有break了
- 如果case的结果是语句 就没有返回值
- 如果case的结果是变量 就有返回值
- 如果又有语句又有返回值 用yield
@Test
public void test1(){
int a = 10;
// 如果case的结果是语句 就没有返回值
switch (a) {
case 10 -> System.out.println("a = 10");
case 20,30,40 -> System.out.println("a = 20");
default -> System.out.println("a = 0");
}
// 如果case的结果是变量 就有返回值
var s = switch (a) {
case 10 -> "a = 10";
case 20,30,40 -> "a = 20";
default -> "a = 0";
};
// 如果又有语句又有返回值 用yield
var s1 = switch (a) {
case 10 -> {
System.out.println("a = 10");
yield "a = 10";
}
case 20,30,40 -> {
System.out.println("a = 20");
yield "a = 20";
}
default -> {
System.out.println("a = 0");
yield "a = 0";
}
};
}
}
老版和新版的比较
// switch表达式
class T1{
// 新版本的switch语法
public static String grade(int score){
score /= 10; //既然分数段都是整数,那就直接整除10
return switch (score) { //增强版switch语法
case 10, 9 -> "优秀";
//语法那是相当的简洁,
//而且也不需要我们自己考虑break或是return来结束switch了(有时候就容易忘记,这样的话就算忘记也没事了)
case 8, 7 -> "良好";
case 6 -> "及格";
default -> "不及格";
};
}
// 老版本的switch语法
public static String grade0(int score){
score /= 10; //既然分数段都是整数,那就直接整除10
String res = null;
switch (score) {
case 10:
case 9:
res = "优秀"; //不同的分数段就可以返回不同的等级了
break; //别忘了break,不然会贯穿到后面
case 8:
case 7:
res = "良好";
break;
case 6:
res = "及格";
break;
default:
res = "不及格";
break;
}
return res;
}
}