switch语句 case穿透

switch语句的case穿透

    public static void main(String[] args) {
        int week = 2;
        /*如果不写break  case 会 一层一层穿透, 下面这个代码
            2 不等于case 1  但是没有break 会输出 "星期一";
            同时 2等于case 2  也会输出case 2 ;
            终端输出  星期一  星期二
        *
        */
        switch (week) {
            case 1:
                System.out.println("星期一");
            case 2:
                System.out.println("星期二");
            case 3:
                System.out.println("星期三");
            default:
                System.out.println("您的星期数不是1-2, 请检查");
                break;
        }
    }

switch   case 穿透  default 在最上面的值

 1 public static void main (String[] args){
 2         int x=4;
 3         int y=0;
 4         /*
 5         * x=4  首先跳过 default 
 6         * case 2 匹配不上  case 3 匹配不上  再去寻找 default 
 7         * 找到default  y++  然后在走一遍  case2   case3  的 y++
 8         * 最后 y = 3 ;
 9         * 本来是case最后看见{}要结束的,但是结束是case 的值需要和 switch的值 对上 否则就需要寻找 default
10         * */
11         switch(x) {
12             default:
13                 y++;
14             case 2:
15                 y++;
16             case 3:
17                 y++;
18             
19         }
20         System.out.println(y);

switch   case 穿透  default 在最下面的值

 1 public static void main (String[] args){
 2         int x=4;
 3         int y=0;
 4         /*
 5         * x=4  首先跳过 default
 6         * case 2 匹配不上  case 3 匹配不上  再去寻找 default
 7         * 找到default  y++  
 8         * 最后 y = 1 ;
 9         *
10         * */
11         switch(x) {
12 
13             case 2:
14                 y++;
15             case 3:
16                 y++;
17             default:
18                 y++;
19         }
20         System.out.println(y);

switch   case 穿透  没有 defaul y的值是0

什么时候用case穿透? 当case的语句是重复的时候可以听case穿透 例如

 1  public static void main(String[] args) {
 2         int week = 2;
 3         /*
 4         case穿透例子
 5         *
 6         */
 7         switch (week) {
 8             case 1:
 9                 System.out.println("星期一");
10                 break;
11             case 2:
12                 System.out.println("星期一");
13                 break;
14             case 3:
15                 System.out.println("星期三");
16                 break;
17             default:
18                 System.out.println("您的星期数不是1-2, 请检查");
19                 break;
20         }
21     }

可以简写

 1     public static void main(String[] args) {
 2         int week = 2;
 3         /*
 4         case穿透例子
 5         *
 6         */
 7         switch (week) {
 8             case 1:
 9             case 2:
10                 System.out.println("星期一");
11                 break;
12             case 3:
13                 System.out.println("星期三");
14                 break;
15             default:
16                 System.out.println("您的星期数不是1-2, 请检查");
17                 break;
18         }
19     }
原文地址:https://www.cnblogs.com/dupeilin/p/12677338.html