标签:color char out 依次 jdk7 中断 比较 版本 nbsp
标准版本:
switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体n+1; break; }
? JDK5以后可以是枚举
? JDK7以后可以是字符串
要彻底弄懂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的机制,一般不会用到的。
default可以省略吗?
可以,但不建议,因为它的作用是对不正确的情况给出提示。
break可以省略吗?
可以,但不建议,因为会出现case穿透现象。
default一定要在最后吗?
可以在任意位置,但是再不同的位置产生的效果也就不一样
switch语句的结束条件
- 遇到break就结束
- 执行到末尾就结束
.
.
参考:https://www.jianshu.com/p/7d4afd256142
标签:color char out 依次 jdk7 中断 比较 版本 nbsp
原文地址:https://www.cnblogs.com/kunmomo/p/10202156.html