为什么此代码显示12而不是1?

时间:2019-03-11 16:28:57

标签: java switch-statement case

class New{
    public static void main(String args[]){
        int x=1;
        switch(x){
            default : System.out.print("default");
            case 1 : System.out.print(1);
            case 2 : System.out.print(2); 
        }
    }
}

当我使用break关键字时,此代码可以正常工作。 但是我不知道为什么这不能正常工作。 有人可以向我解释代码吗?

1 个答案:

答案 0 :(得分:2)

switch语句跳转到匹配的case,并从那里继续处理,直到看到break.,因为该代码中没有break,因此它从case 1开始,输出1,然后继续case 2并输出2。尽管很少见,有时 这种“下降到下一个case”是你真正想要的。但是通常,您希望break停止它。

如果将其移到末尾,它也会显示"default"

class New {
    public static void main(String args[]){
        int x=1;
        switch(x){
            case 1 : System.out.print(1);
            case 2 : System.out.print(2); 
            default : System.out.print("default");
        }
    }
}

输出

12default

类似地,如果将x设置为2,则会跳过case 1

class New {
    public static void main(String args[]){
        int x=2; // <===
        switch(x){
            case 1 : System.out.print(1);
            case 2 : System.out.print(2); 
            default : System.out.print("default");
        }
    }
}

输出

2default