switch语句,在java开头有一个default子句

OPK*_*OPK 2 java default switch-statement

打印出以下代码 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);

}
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*rov 7

  • i == 5与你case的任何一个都不匹配,所以控制转到了default条款.

  • default条款是空的,没有break声明,它会立即下降,通过case下面- case 1在你的代码.

  • case 1打印,"1"并且,因为它也没有break声明,落到case 2,等等.


case小号1,2,3 不属于default-重要的是他们的订单.

如果你要重新排序你的交换机statement并将default子句写为最后一个,它将不会打印任何内容.