开头带有 default 子句的 switch 语句 java

switch statement with an default clause at the beginning java

下面的代码打印出 1,2,3 ,如果我更改 int i = 3; 它将打印出 3 。我想知道这背后的原因。我使用了调试器,似乎如果 i = 3 它转到案例 3 并打印出 3 然后程序 terminated.I 相信当 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 到下面的 casecase 1在你的代码中。

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


cases 123 不属于 default——重要的是是他们的订单。

如果您重新排序开关 statement 并将 default 子句写在最后一个子句,它不会打印任何内容。

如果您在任何情况下都没有 break 或 default 它将失败,直到找到 break 或 end of case 块。所以在你的情况下,因为你没有默认中断,所以它一直到最后。如果没有中断,您的程序将打印 1,2,3 for i>3.