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

时间:2015-01-12 22:43:04

标签: java switch-statement default

以下代码打印出1,2,3,如果我更改int i = 3;,则会打印出3。我想知道这背后的原因。我使用了调试器,似乎i = 3它转到案例3并打印出3然后程序终止。我相信i=5时它会转到default,这是否意味着{{1}都属于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是必需的,但这不是我想要的答案。

2 个答案:

答案 0 :(得分:7)

  • i == 5与您的任何case都不匹配,因此控件转到default子句。

  • default子句为空,没有break语句,并且会立即falls through到代码中的case - case 1

  • case 1打印"1",因为它也没有break语句,所以会落到case 2,依此类推。


case s 123 不属于default - 重要的是他们的订单。< / p>

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

答案 1 :(得分:0)

如果您在任何情况下没有中断或默认,它将会发生故障,直到找到中断或结束时为止。所以在你的情况下,因为你没有默认的中断,所以它一直到最后。如果没有中断,您的程序将打印1,2,3 for i&gt; 3.