
“嗨,阿米戈!”
“你好,Bilaabo!很高興再次見到你。只有你的講座非常好並且易於理解。不像這個 Java 內存模型。”
“是的,比拉博很會選課,今天就給大家講講switch語句。”
“我想已經有人告訴我了。”
“Ellie 做到了。那麼,Amigo 不想听有關 switch 語句的課程嗎?也許你會開始教自己的?”
“不,我想,我想。讓我們聽聽 switch 語句。”
“好的。在Java中,有一種叫做switch語句的東西,當你需要根據某個變量的不同值來執行某些動作時,它很方便。”
帶開關的例子 | 等效代碼 |
---|---|
|
|
如果傳遞給它的變量與關鍵字 case 後面的值匹配,switch語句可以讓您跳轉到所需的代碼段。
如果 i 為 1,則執行將跳轉到標記為 «case 1» 的行。
如果 i 為 2,則執行將跳轉到標記為 «case 2» 的行。
如果 i 為 3,則執行將跳轉到標記為 «case 3» 的行。
“如果沒有跳轉到任何案例,則執行 «default» 塊。”
“我明白了。右邊是相同的邏輯,但使用 if 語句實現?”
“是的。”
“那‘break’這個詞是怎麼回事?你說它只能在循環中使用?”
“對,還有這裡。當break語句執行時,我們立即退出switch。”
“但是如果去掉break語句,那麼switch裡面的所有行都會執行到最後。”
例子 | 輸出(對於 i = 1) | 輸出(對於 i = 2) |
---|---|---|
|
一二 三多 _ _ |
二 三 許多 |
“實際上,case是代碼中的一個標籤。在switch語句中,我們跳轉到下一個標籤,開始執行所有代碼,直到switch結束,或者直到遇到break語句。”
“所以,如果我們不寫 break,那麼我們跳轉到的行將被執行,然後是所有其他行,直到右大括號。是這樣嗎?”
“是的。”
“小菜一碟。但我更喜歡使用 if 語句。它們沒有這些毫無意義的 break 語句。”
“的確,if 語句通常更緊湊。但 switch 語句有時更具可讀性。”
“比較:”
帶開關的例子 | 等效代碼 |
---|---|
|
|
“我不會說它更具可讀性。”
“好的,但是這個例子呢?”
帶開關的例子 | 等效代碼 |
---|---|
|
|
“Bilaabo,你的例子看起來不太對。所以,如果我使用 return,我可以省略 break 語句嗎?”
“沒錯,一個return語句會立即退出這個方法。”
“似乎 if 語句總是更緊湊。但這次 switch 語句變得更具可讀性。”
“呼,終於。”
“還有一件事。你不必在最後寫默認值。如果你不這樣做,那麼如果沒有標籤匹配,什麼也不會發生。”
“呃,完全正確。就像 if-else,但可讀性更強!”
“太好了。我很高興你喜歡我的課。”
“哦,我差點忘了。最初,你只能在 switch 語句中使用原始類型和枚舉。但現在他們已經添加了對字符串的支持。”
“你的意思是我寫這個?”
public int getNumber(String number)
{
switch(number)
{
case "one":
return 1;
case "two":
return 2;
case "three":
return 3;
default:
return -1;
}
}
“是的。方便吧?”
“是的。Switch語句很棒!”
GO TO FULL VERSION