[英]Switch Statement Default Case Fall Through
這是一個小混亂,請原諒我的無知。 這是一個代碼片段。
public class SwitchTest {
public static void main(String[] args) {
int x = 2;
switch (x) {
case 1:
System.out.println("1");
break;
default:
System.out.println("helllo");
case 2:
System.out.println("Benjamin");
break;
}
}
}
在此,如果x的值為2,則僅打印Benjamin
。 很好 現在假設,我將x to 3
值更改x to 3
,不匹配任何大小寫,而不是its a fall through from default case
。 到那時CASE 2
將通過時,編譯器不需要將每種情況都匹配為3,這比為什么它返回默認值並輸出hello Benjamin更為重要。 有人可以解釋嗎?
謝謝,
您需要添加break;
語句以打破switch
塊。
switch (x) {
case 1:
System.out.println("1");
break;
default:
System.out.println("helllo");
break; // <-- add this here
case 2:
System.out.println("Benjamin");
break;
}
一般而言,最好使用default:
case是switch
塊中的最后一個case。
在這種情況下,開關遵循以下模式:
x==1? No, check next case
default? Not done yet, check other cases
x==2? No, check next case
//No more cases, so go back to default
default? Yes, do default logic
// no break statement in default, so it falls through to case 2: logic without checking the case
output case 2 logic
break
請注意,該塊將如何跳過默認情況,並保存到以后,除非我們用盡了所有其他可能的情況。
因為您在default
情況下沒有break
,所以它會打印兩個字符串,因此它會繼續進入case 2
打印Benjamin。 您可以通過在default
況上方添加break
或將工case 2
移動來解決此問題。
'switch'大小寫是'if-then-else'的其他形式,默認大小寫是最后的else部分。 建議在切換結束時寫入默認值。
默認檢查為最后。 這就是為什么感覺編譯器“退縮”了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.