switch
语句会根据表达式的值从相匹配的 case
标签处开始执行,一直执行到 break
语句处或者是 switch
语句的末尾。如果表达式的值与任一 case
值不匹配,则进入 default
语句(如果存在)。根据表达式值的不同可以执行许多不同的操作。其语法结构如下:
switch (表达式) {
case 值1:
语句序列1;
[break];
case 值2:
语句序列2;
[break];
// ...
[default:默认语句;]
}
中括号里的为可选项。
switch
语句中 case
标签在JDK1.5之前必须是int
/ byte
/ short
/ char
或者枚举,在JDK1.7之后才允许使用字符串 String
。
穿透现象:在不判断下一个case值的情况下,向下运行,直到遇到break,或者整体switch语句结束。例如:
char grade = 'A'; switch (grade){ case 'A': System.out.println("优秀"); case 'B': System.out.println("良好"); case 'C': System.out.println("及格"); }
输出结果为:
优秀 良好 及格
所以为了防止代码的穿透现象,要在每个分支后面加上一个
break
。
注意事项:
-
default
分支可以写在任意的位置上,但是如果没有在最后一行,后面必须加上break
,如果在最后一行的话,break
就可以省略 -
如果相邻分支逻辑是一样的,那么就可以只保留最后一个分支语句,上面的都可以省去不写了,例如:
switch(score/10){ case 10 : case 9 : System.out.println("A级"); break; case 8 : System.out.println("B级"); break; case 7 : System.out.println("C级"); break; case 6 : System.out.println("D级"); break; default: System.out.println("成绩错误"); break; case 5 : case 4 : case 3 : case 2 : case 1 : case 0 : System.out.println("E级"); break; }
-
switch
语句的应用场合是需要进行等值判断且等值的情况比较少的时候