switch表达式
耿祥义视讲解
2020-12-20
1. switch表达式的动机
传统的switch语句里通过使用break控制分支的执行,许多break语句使switch语句变得不必要地冗长。另外,一旦丢失break,意味着分支失控。
2. switch表达式的格式
switch(开关值){
case 常量值 -> 表达式 ;
case 常量值 -> 表达式 ;
... ...
default -> 表达式
}
各个case表达式要么都有值,要么都没有值。
如果各个case表达式都有值,就必须有default(否则可以省略)。
开关值的类型可以是byte, short,char,int ,String,enum(不可以是long)。
★switch表达式的值
●如果开关值等于case的常量值,switch表达式的值就是该case给出的表达式的值。如果开关值不和任何case匹配,switch表达式的值就是default给出的表达式的值。
●如果表达式都是无值表达式,switch表达式也是无值表达式。
3. 扩展
switch(开关值){
case 一组用逗号分隔的常量值 -> 表达式 ;
case 一组用逗号分隔的常量值 -> 表达式 ;
... ...
default -> 表达式
}
●如果开关值等于case给出的某个常量值,switch表达式的值就是该case给出的表达式的值。如果开关值不和任何case匹配,switch表达式的值就是default给出的表达式的值。
●如果表达式都是无值表达式,switch表达式也是无值表达式。
4.例子
(1)
public class E {
public static void main(String args[]) {
int m =5,n =10;
char c = '+';
double result = 0;
result= switch (c) {
case '+' -> m+n ;
case '-' -> m-n;
case '*' -> m*n;
case '/' -> m/n;
default -> Double.NaN;
} ;
}
}
(2)
public class E2 {
public static void main(String args[]) {
int month = 2;
byte result = switch (month) {
case 1,3,5,7,8,10,12 -> 31;
case 4,6,9,11 -> 30;
case 2 -> 28;
default -> -1;
};
}
}
(3)
public class E3 {
public static void main(String args[]) {
byte m =5;
switch (m) {
}
}
}
领取专属 10元无门槛券
私享最新 技术干货