開關,案例,默認 - 1

“嗨,阿米戈!”

“你好,Bilaabo!很高興再次見到你。只有你的講座非常好並且易於理解。不像這個 Java 內存模型。”

“是的,比拉博很會選課,今天就給大家講講switch語句。”

“我想已經有人告訴我了。”

“Ellie 做到了。那麼,Amigo 不想听有關 switch 語句的課程嗎?也許你會開始教自己的?”

“不,我想,我想。讓我們聽聽 switch 語句。”

“好的。在Java中,有一種叫做switch語句的東西,當你需要根據某個變量的不同值來執行某些動作時,它很方便。”

帶開關的例子 等效代碼
int i = 5;
switch(i)
{
 case 1:
  System.out.println("one");
  break;
 case 2:
  System.out.println("two");
  break;
 case 3:
  System.out.println("three");
  break;
 default:
  System.out.println("many");
}
int i = 5;
if (i == 1)
{
 System.out.println("one");
}
else if (i == 2)
{
 System.out.println("two");
}
else if (i == 3)
{
 System.out.println("three");
}
else
{
 System.out.println("many");
}

如果傳遞給它的變量與關鍵字 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)
switch(i)
{
 case 1:
  System.out.println("one");
 case 2:
  System.out.println("two");
 case 3:
  System.out.println("three");
 default:
  System.out.println("many"); }
一二 三多
_ _



許多

“實際上,case是代碼中的一個標籤。在switch語句中,我們跳轉到下一個標籤,開始執行所有代碼,直到switch結束,或者直到遇到break語句。”

“所以,如果我們不寫 break,那麼我們跳轉到的行將被執行,然後是所有其他行,直到右大括號。是這樣嗎?”

“是的。”

“小菜一碟。但我更喜歡使用 if 語句。它們沒有這些毫無意義的 break 語句。”

“的確,if 語句通常更緊湊。但 switch 語句有時更具可讀性。”

“比較:”

帶開關的例子 等效代碼
public String getName(int i)
{
 switch(i)
 {
  case 1:
   return "one";
  case 2:
   return "two";
  case 3:
   return "three";
  default:
   return "many";
}
public String getName(int i)
{
 if (i == 1)
  return "one";

 if (i == 2)
  return "two";

 if (i == 3)
  return "three";

return "many"
}

“我不會說它更具可讀性。”

“好的,但是這個例子呢?”

帶開關的例子 等效代碼
public String getName(int i)
{
 switch(i)
 {
  case 1:
  case 2:
   return "one or two";
  case 3:
  case 4:
  case 5:
   return "three to five";
  default:
   return "many";
}
public String getName(int i)
{
 if (i == 1 || i == 2)
  return "one or two";

 if (i == 3 || i == 4 || i == 5)
  return "three to five";

return "many"
}

“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語句很棒!”