标准版本:
switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体n+1; break; }
- switch:说明这是switch语句。
- 表达式:可以是byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是字符串
- case:后面的值就是要和表达式进行比较的值
- break:表示程序到这里中断,跳出switch语句
- default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else
“作死”用法
要彻底弄懂switch语句,就要明白default在不同位置,语句中是否包含break的各种语句组合可能性。归纳一下,其实很简单,大约就下面三种具有代表性的可能。我们稍微“作一下”,看大家是否还能快速地解出正确的答案呢?
class SwitchTest { public static void main(String[] args) { int x = 2; int y = 3; switch(x){ default: y++; case 3: y++; case 4: y++; } System.out.println("y="y); //答案为6,虽然在case里面都不匹配,但由上而下穿透,依次加1 System.out.println("---------------"); int a = 2; int b = 3; switch(a){ case 3: b++; case 4: b++; default: b++; case 5: b++ } System.out.println("b="b); //答案为5,虽然在case里面都不匹配,从default开始穿透,依次加1 System.out.println("---------------"); int c = 4; int d = 3; switch(c){ case 3: d++; case 4: d++; default: d++; case 5: d++; break; case 6: d++; } System.out.println("d="d); //答案为6,从case 4开始到case 5遇到break结束,依次加1 System.out.println("---------------"); }
由上面的结果可以看出,不同的格式,他们所得出的结果也就不同。但以上的“作死”用法只是为了让大家更加深入地了解switch的机制,一般不会用到的。
注意事项:
- case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
-
default可以省略吗?
可以,但不建议,因为它的作用是对不正确的情况给出提示。
-
break可以省略吗?
可以,但不建议,因为会出现case穿透现象。
-
default一定要在最后吗?
可以在任意位置,但是再不同的位置产生的效果也就不一样
-
switch语句的结束条件
- 遇到break就结束
- 执行到末尾就结束
.
.
参考:https://www.jianshu.com/p/7d4afd256142