Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么这个代码打印12而不是1?_Java_Switch Statement_Case - Fatal编程技术网

Java 为什么这个代码打印12而不是1?

Java 为什么这个代码打印12而不是1?,java,switch-statement,case,Java,Switch Statement,Case,当我使用break关键字时,这段代码可以正常工作。 但我不知道为什么这不能正常工作。 有人能给我解释一下代码吗?switch语句跳转到匹配的case,并从那里继续处理,直到看到中断。由于该代码中没有中断,它从案例1开始,输出1,然后继续案例2和输出2。虽然这种情况很少见,但有时这种情况下,你真正想要的是下一种情况。但通常情况下,你需要休息来阻止它 如果你把它移到最后,它也会说默认: class New{ public static void main(String args[]){

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

switch语句跳转到匹配的case,并从那里继续处理,直到看到中断。由于该代码中没有中断,它从案例1开始,输出1,然后继续案例2和输出2。虽然这种情况很少见,但有时这种情况下,你真正想要的是下一种情况。但通常情况下,你需要休息来阻止它

如果你把它移到最后,它也会说默认:

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); 
        }
    }
}
输出

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");
        }
    }
}
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");
        }
    }
}
输出

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");
        }
    }
}
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");
        }
    }
}

在调试器中逐步完成它。使用调试器不是一项高级技能,学习调试器基本上是每个初学者在Hello,World之后应该做的下一件事。但是x=1,对吗?那么为什么要执行案例2呢?@thisuratenuka-正如我前面所说的,没有中断,它会从案例1开始继续执行代码。它继续到案例2,在我后面的示例中,进入默认状态。这就是为什么如果你不希望这种情况发生,你需要休息,否则执行会继续到下一个案例。虽然这种情况很少见,但有时这种情况下,你真正想要的是下一种情况。