2015-12-10 45 views
2

對於一塊下面的代碼,在10和98打印出來Java的switch語句 - 混亂的行爲

int i = 10; 
switch(i){ 
    default: 
     System.out.println(100); 
    case 10: 
     System.out.println(10); 
    case 98: 
     System.out.println(98); 
} 

我不明白,爲什麼在情況下98碼得到執行的事情,而情況不匹配比較價值10.對我來說,這是不可理解的。有人可以向我解釋嗎?
非常感謝。

回答

5

如果您在每個案例結束時都沒有中斷,那麼將會執行與i的值匹配的案例之後的所有案例。

switch(i){ 
    case 10: 
     System.out.println(10); 
     break; 
    case 98: 
     System.out.println(98); 
     break; 
    default: 
     System.out.println(100); 
} 
+0

這應該永遠不會發生?因爲我不明白java開關的設計點了...... – Xitrum

+0

@TuanLD您先將默認情況下(注意我將它移動到最後),因此每個不是10或98的值都將導致所有3正在執行的案件。 – Eran