关于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 语句则会跳出判断。

posted @ 2022-04-13 10:24  亦是行人  阅读(20)  评论(0)    收藏  举报