以下代码打印出1,2,3,如果我更改int i = 3;,它将打印出3。我想知道背后的原因。我使用了调试器,看来i = 3进入情况3并打印出3然后程序终止了。我相信当i=5进入default时,这是否意味着case 1,case 2 and case 3都属于default条款?

int i = 5;
switch(i){
default:
case 1:
    System.out.println(1);
case 2:
    System.out.println(2);
case 3:
    System.out.println(3);

}


编辑:
这个问题来自测试,它要求此代码的输出。所以我试图弄清楚为什么输出是1,2,3,我知道需要break;,但这不是我想要的答案。

最佳答案

i == 5与您的任何case不匹配,因此控制权转到了default子句。
default子句为空,没有break语句,它立即falls through到下面的case —代码中的case 1
case 1打印"1",并且由于它也没有break语句,因此会显示case 2,依此类推。




case123不属于default —重要的是它们的顺序。

如果您要对开关statement重新排序,并将default子句写为最后一个子句,它将什么也不打印。

10-08 09:04
查看更多