相信很多新手对switch语句的标准用法,都已熟悉并能正确地使用。
标准版本:
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就结束
- 执行到末尾就结束
.
.