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 }