测试代码:
int x = 2;
int y = 3;
switch(x){
default:
y++;
case 3:
y++;
case 4:
y++;
break;
case 5:
y++;
}
System.out.println("y = " + y);
执行顺序:匹配对象为x,首先进入switch语句后,不会直接进入default语句,它是在没有匹配case的情况下最后去执行的,继续往向下走,没有匹配上case3,继续往下走,依旧没有匹配,继续向下与5匹配,匹配不上,由于没有成功匹配case,执行default中的语句,进行y++,但这里没有遇到break语句,忽略掉case3和4的判断,执行两次y++,直到遇到break或是右大括号才跳出switch语句,所以总共进行了3次y++,输出结果为y=6
中间这两次连续的y++就是case穿透导致的