以下代码打印出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
,依此类推。case
的1
,2
,3
不属于default
—重要的是它们的顺序。
如果您要对开关statement
重新排序,并将default
子句写为最后一个子句,它将什么也不打印。