2016-02-28 70 views
-1

除了性能,我想知道是否有某些情況下只能使用If語句而不使用Switch語句,反之亦然?「If語句」與Java中的「Switch語句」完全相同嗎?

因爲它們是完全可以互換的嗎?如果我願意或者會打破特定的程序,我可以將整段代碼從Switch語句交換到If語句,反之亦然?

不是我想要的,只是理論上和出於好奇心,因爲我是新來的編碼,並一直想知道這一點。

我無法真正找到我正在尋找的答案,所以我很抱歉如果這是重複的。

回答

4

他們是他們可以做什麼根本的不同 - if語句可以檢查你可以以某種方式提煉到一個boolean值的任何邏輯,而switch報表每種情況比較精確值 - 見the docs瞭解詳情。

if-then-else語句可以基於值或條件範圍測試表達式,而switch語句僅基於單個整數,枚舉值或String對象測試表達式。

這意味着,如果你想要做的不是「這是否值等於這個數字,枚舉或字符串」爲每一種情況下,你需要if語句(或管理流程的一些其他方式)更復雜的邏輯,而不是一個switch

一個簡單的例子是檢查,如果數量超過10,但在9000

if (value > 10 && value < 9000) { 
    ... 
} 

這個轉換爲switch語句將意味着做一些瘋狂的喜歡對每一個可能的值的情況下,超過10但在9000 )

+0

啊好吧,這是有道理的。我還沒有進入更復雜的邏輯,所以我不能理解爲什麼If語句甚至存在。感謝您的快速和徹底的答案! – Graver

+0

@格雷弗值得注意的是,還有其他的不同之處 - 開關語句具有貫穿性(沒有'break's,流程會落入未來的案例中) - 這很難用if語句來模擬(這是一個原因'switch'經常被新語言所遺漏 - 它的語義是很尷尬和容易犯錯的 - 它的主要優點是容易優化)。 –