开头带有 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 到下面的 case
— case 1
在你的代码中。
case 1
打印 "1"
并且因为它也没有 break
语句,所以会落到 case 2
,依此类推.
case
s 1
、2
、3
不属于 default
——重要的是是他们的订单。
如果您重新排序开关 statement
并将 default
子句写在最后一个子句,它不会打印任何内容。
如果您在任何情况下都没有 break 或 default 它将失败,直到找到 break 或 end of case 块。所以在你的情况下,因为你没有默认中断,所以它一直到最后。如果没有中断,您的程序将打印 1,2,3 for i>3.
下面的代码打印出 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 到下面的case
—case 1
在你的代码中。case 1
打印"1"
并且因为它也没有break
语句,所以会落到case 2
,依此类推.
case
s 1
、2
、3
不属于 default
——重要的是是他们的订单。
如果您重新排序开关 statement
并将 default
子句写在最后一个子句,它不会打印任何内容。
如果您在任何情况下都没有 break 或 default 它将失败,直到找到 break 或 end of case 块。所以在你的情况下,因为你没有默认中断,所以它一直到最后。如果没有中断,您的程序将打印 1,2,3 for i>3.