1.多項選擇運算符:switch

Java 有另一個有趣的運算符,它繼承自它的祖父 (C++)。我們正在談論switch聲明。我們也可以稱其為多項選擇運算符。看起來有點麻煩:

switch(expression)
{
   case value1: code1;
   case value2: code2;
   case value3: code3;
}

括號內指示表達式或變量。如果表達式的值為value1,則 Java 機器開始執行code1。如果表達式等於value2,則執行跳轉到code2。如果表達式等於value3,則code3執行。

例子:

代碼 控制台輸出
int temperature = 38;

switch(temperature)
{
   case 36: System.out.println("Low");
   case 37: System.out.println("Normal");
   case 38: System.out.println("High");
} 
High

2.break聲明在switch

語句的一個重要特徵switch是程序只是跳轉到所需的行(到所需的代碼塊),然後執行所有代碼塊,直到switch. 不僅是中的值對應的代碼塊switch,還有直到結束的所有代碼塊switch

例子:

代碼 控制台輸出
int temperature = 36;

switch(temperature)
{
   case 36: System.out.println("Low");
   case 37: System.out.println("Normal");
   case 38: System.out.println("High");
} 
Low
Normal
High

給定溫度36,程序會進入switch語句,跳轉到並執行第一塊代碼(第一種情況),然後高高興興地執行剩下的代碼塊。

如果你只想執行一個代碼塊——與匹配案例相關聯的代碼塊——那麼你需要用一條break語句結束該塊;

例子:

代碼 控制台輸出
int temperature = 36;

switch(temperature)
{
   case 36:
      System.out.println("Low");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("High");
}
Low

您可以省略break語句的最後一個 case switch,因為該塊是最後一個有或沒有 break 語句的塊。


3.默認動作:default

另一個重點。如果列出的所有情況都不匹配switch括號中的表達式,會發生什麼情況?

switch如果沒有找到匹配的 case,則跳過語句的其餘部分,程序將在大括號結束switch語句後繼續執行。

也就是說,您還可以使switch語句的行為類似於語句中的 else 分支if-else。為此,請使用default關鍵字。

case如果塊中沒有一個sswitch與表達式的值匹配並且switchdefault塊,則將執行 default 塊。例子:

代碼 控制台輸出
int temperature = 40;
switch(temperature)
{
   case 36:
      System.out.println("Low");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("High");
      break;
   default:
      System.out.println("Call an ambulance");
}
Call an ambulance

4.比較switchif-else

語句switch有點類似於if-else語句,只是更複雜。

您始終可以將一條語句的代碼重寫switch為多條if語句。例子:

帶開關的代碼 用 if-else 編碼
int temperature = 40;
switch(temperature)
{
   case 36:
      System.out.println("Low");
      break;
   case 37:
      System.out.println("Normal");
      break;
   case 38:
      System.out.println("High");
      break;
   default:
      System.out.println("Call an ambulance");
} 
int temperature = 40;

if (temperature == 36)
{
   System.out.println("Low");
}
else if (temperature == 37)
{
   System.out.println("Normal");
}
else if (temperature == 38)
{
   System.out.println("High");
}
else
{
   System.out.println("Call an ambulance");
}

左邊的代碼將與右邊的代碼完全一樣。

當一個語句在每個單獨的情況下包含各種複雜表達式時,多個語句鍊if-else是更可取的。if



5. 語句中可以使用哪些表達式switch

並非所有類型都可以用作語句case中的標籤switch。您可以使用以下類型的文字:

  • 整數類型:byte, short, int,long
  • char
  • String
  • 任何enum類型

不能使用任何其他類型作為案例標籤。

使用enuminsideswitch語句的示例:

Day day = Day.MONDAY;
switch (day)
{
   case MONDAY:
      System.out.println("Monday");
      break;
   case TUESDAY:
      System.out.println("Tuesday");
      break;
   case WEDNESDAY:
      System.out.println("Wednesday");
      break;
   case THURSDAY:
      System.out.println("Thursday");
      break;
   case FRIDAY:
      System.out.println("Friday");
      break;
   case SATURDAY:
      System.out.println("Saturday");
      break;
   case SUNDAY:
      System.out.println("Sunday");
      break;
}

注意:如果使用enuminsideswitch語句,則不需要在case標籤中的每個值前面寫上類名。只寫值就夠了。