switch case without break
1、假设输入值为a=2,以下程序的输出结果是什么?
public void calculate(int a){
int result = 0;
switch (a){
case 1:
result = a;
case 2:
result = result + a*2;
case 3:
result = result + a*3;
}
System.out.println(result);
}
如果你的答案是10,那么恭喜你,可以跳过该小节内容。
考察的是:switch语句在没有break的情况下,会如何执行:从匹配到的case开始,顺序执行之后的所有case,直到遇到break或者default。
所以上面的程序会执行:
result = result + a*2;
result = result + a*3;
所以,最终输出结果是10。
正常写代码的时候,不要挑战这种错误用法,要在每种case后面,加上break。如果多种case需要执行相同的逻辑,可以使用:
case 常量表达式1:
doX();
break;
case 常量表达式2: case 常量表达式3:
doY(2);
break;
2、使用switch时,可以使用字符串常量作为case标签吗?
case标签支持三种类型:①char\byte\short\int;②枚举常量;③从Java1.7开始,支持字符串字面量。
所以,要根据当前使用的JDK版本来确定。
Last updated