关于switch case 一个奇怪的问题
问题
public class Main {
final static short i = 2;
public static int j = 0;
public static void main(String[] args) {
for (int k = 0; k < 3; k++) {
switch (k) {
case i:
System.out.print("1");
case i - 1:
System.out.print("2");
default:
System.out.print("0");
}
}
}
}
//020120
解释
这里针对JDK8的情况。
case 分支里面仅能包含下列几种选项
- 类型为 char,byte,short或者int的常量表达式
- 枚举常量
- 字符串字面常量
如果当前匹配成功的 case 语句块没有 break 语句,则从当前 case 开始,后续所有 case 的值都会输出,如果后续的 case 语句块有 break 语句则会跳出判断。

浙公网安备 33010602011771号