什么是case穿透

平时我们写 switch语句时,会搭配case,break,我们有时候会忘记写break,示例:

int choice = 1;
switch (choice) {
            case 1:        
                System.out.println("春天");
            case 2:
                System.out.println("夏天");
                break;
            default:
                System.out.println("hahaha");
        }

结果是什么呢?让我们输出一下

春天
夏天

下面我们来试一试利用case穿透来判断季节

  int month= 1;
        switch (month) {
            case 1:
            case 2:
            case 3:
                System.out.println("春天");
                break;
            case 4:
            case 5:
            case 6:
                System.out.println("夏天");
                break;
            default:
                System.out.println("hahaha");

        }
"C:\Program Files\Java\jdk1.8.0_144\bin\java.exe" "-javaagent:D:\IntelliJ IDEA\IntelliJ IDEA 2018.2.4\lib\idea_rt.jar=63289:D:\IntelliJ IDEA\IntelliJ IDEA 2018.2.4\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_144\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\rt.jar;D:\IDEA2018\vue-first\out\production\vue-first" Test
春天

Process finished with exit code 0

完全没有问题,哈哈~~~~

如果没有一个break,会发生什么呢

public class Test {
    public static void main(String[] args) {
        int month= 4;
        switch (month) {
            case 1:
            case 2:
            case 3:
                System.out.println("春天");
                //break;
            case 4:
            case 5:
            case 6:
                System.out.println("夏天");
                //break;
            default:
                System.out.println("hahaha");
        }
    }
}
"C:\Program Files\Java\jdk1.8.0_144\bin\java.exe" "-javaagent:D:\IntelliJ IDEA\IntelliJ IDEA 2018.2.4\lib\idea_rt.jar=63329:D:\IntelliJ IDEA\IntelliJ IDEA 2018.2.4\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_144\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_144\jre\lib\rt.jar;D:\IDEA2018\vue-first\out\production\vue-first" Test
夏天
hahaha

Process finished with exit code 0

这就是case穿透(去掉break),会自动进行下面的第二个case,直到遇到break,如果没有break,会进行到default,没有default也会结束