Java中Switch Case语句的奇怪行为

时间:2013-11-10 15:46:13

标签: java switch-statement

我理解Java switch case是以这种方式设计的,但为什么这种行为在Java中

    int x = 1;

    switch(x){
    case 1: System.out.println(1);
    case 2: System.out.println(2);
    case 3: System.out.println(3);
    default: System.out.println("default");

    }

output : 1
         2   
         3
         default

我的问题是为什么案例2和3被执行?我知道我省略了断言陈述 但是x从来没有2或3,但case 2case 3仍在执行?

4 个答案:

答案 0 :(得分:4)

没有break语句所以所有情况都被执行

使用break语句

switch(x){
    case 1: System.out.println(1);break;
    case 2: System.out.println(2);break;
    case 3: System.out.println(3);break;
    default: System.out.println("default");

    }

答案 1 :(得分:3)

  

我知道我省略了break语句,但x从不是2或3,而是案例2和   案例3仍然执行?

直接来自doc

  

break语句是必要的,因为没有它们,语句就可以了   switch blocks fall through:匹配大小写后的所有语句   标签按顺序执行,无论表达式如何   后续案例标签,直到遇到break语句。

答案 2 :(得分:1)

您需要为每个案例添加break语句。由于没有中断声明,所有情况都会被执行。

答案 3 :(得分:0)

您错过了Break声明。

switch(x){
case 1: System.out.println(1);
break;
case 2: System.out.println(2);
break;
case 3: System.out.println(3);
break;
default: System.out.println("default");
}

检查 The switch Statement

  

break语句是必要的,因为没有它们,语句就可以了   switch blocks fall through:匹配大小写后的所有语句   标签按顺序执行,无论表达式如何   后续案例标签,直到遇到break语句。