1.多項選擇運算符:switch
Java 有另一個有趣的運算符,它繼承自它的祖父 (C++)。我們正在談論switch
聲明。我們也可以稱其為多項選擇運算符。看起來有點麻煩:
switch(expression)
{
case value1: code1;
case value2: code2;
case value3: code3;
}
括號內指示表達式或變量。如果表達式的值為value1
,則 Java 機器開始執行code1
。如果表達式等於value2
,則執行跳轉到code2
。如果表達式等於value3
,則code3
執行。
例子:
代碼 | 控制台輸出 |
---|---|
|
|
2.break
聲明在switch
語句的一個重要特徵switch
是程序只是跳轉到所需的行(到所需的代碼塊),然後執行所有代碼塊,直到switch
. 不僅是中的值對應的代碼塊switch
,還有直到結束的所有代碼塊switch
。
例子:
代碼 | 控制台輸出 |
---|---|
|
|
給定溫度36,程序會進入switch
語句,跳轉到並執行第一塊代碼(第一種情況),然後高高興興地執行剩下的代碼塊。
如果你只想執行一個代碼塊——與匹配案例相關聯的代碼塊——那麼你需要用一條break
語句結束該塊;
例子:
代碼 | 控制台輸出 |
---|---|
|
|
您可以省略break
語句的最後一個 case switch
,因為該塊是最後一個有或沒有 break 語句的塊。
3.默認動作:default
另一個重點。如果列出的所有情況都不匹配switch
括號中的表達式,會發生什麼情況?
switch
如果沒有找到匹配的 case,則跳過語句的其餘部分,程序將在大括號結束switch
語句後繼續執行。
也就是說,您還可以使switch
語句的行為類似於語句中的 else 分支if-else
。為此,請使用default
關鍵字。
case
如果塊中沒有一個sswitch
與表達式的值匹配並且switch
有default
塊,則將執行 default 塊。例子:
代碼 | 控制台輸出 |
---|---|
|
|
4.比較switch
和if-else
語句switch
有點類似於if-else
語句,只是更複雜。
您始終可以將一條語句的代碼重寫switch
為多條if
語句。例子:
帶開關的代碼 | 用 if-else 編碼 |
---|---|
|
|
左邊的代碼將與右邊的代碼完全一樣。
當一個語句在每個單獨的情況下包含各種複雜表達式時,多個語句鍊if-else
是更可取的。if
5. 語句中可以使用哪些表達式switch
?
並非所有類型都可以用作語句case
中的標籤switch
。您可以使用以下類型的文字:
- 整數類型:
byte
,short
,int
,long
char
String
- 任何
enum
類型
您不能使用任何其他類型作為案例標籤。
使用enum
insideswitch
語句的示例:
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;
}
注意:如果使用enum
insideswitch
語句,則不需要在case
標籤中的每個值前面寫上類名。只寫值就夠了。
括號內指示表達式或變量。如果表達式的值為value1
,則 Java 機器開始執行code1
。如果表達式等於value2
,則執行跳轉到code2
。如果表達式等於value3
,則code3
執行。
例子:
代碼 | 控制台輸出 |
---|---|
|
|
2.break
聲明在switch
語句的一個重要特徵switch
是程序只是跳轉到所需的行(到所需的代碼塊),然後執行所有代碼塊,直到switch
. 不僅是中的值對應的代碼塊switch
,還有直到結束的所有代碼塊switch
。
例子:
代碼 | 控制台輸出 |
---|---|
|
|
給定溫度36,程序會進入switch
語句,跳轉到並執行第一塊代碼(第一種情況),然後高高興興地執行剩下的代碼塊。
如果你只想執行一個代碼塊——與匹配案例相關聯的代碼塊——那麼你需要用一條break
語句結束該塊;
例子:
代碼 | 控制台輸出 |
---|---|
|
|
您可以省略break
語句的最後一個 case switch
,因為該塊是最後一個有或沒有 break 語句的塊。
3.默認動作:default
另一個重點。如果列出的所有情況都不匹配switch
括號中的表達式,會發生什麼情況?
switch
如果沒有找到匹配的 case,則跳過語句的其餘部分,程序將在大括號結束switch
語句後繼續執行。
也就是說,您還可以使switch
語句的行為類似於語句中的 else 分支if-else
。為此,請使用default
關鍵字。
case
如果塊中沒有一個sswitch
與表達式的值匹配並且switch
有default
塊,則將執行 default 塊。例子:
代碼 | 控制台輸出 |
---|---|
|
|
4.比較switch
和if-else
語句switch
有點類似於if-else
語句,只是更複雜。
您始終可以將一條語句的代碼重寫switch
為多條if
語句。例子:
帶開關的代碼 | 用 if-else 編碼 |
---|---|
|
|
左邊的代碼將與右邊的代碼完全一樣。
當一個語句在每個單獨的情況下包含各種複雜表達式時,多個語句鍊if-else
是更可取的。if
5. 語句中可以使用哪些表達式switch
?
並非所有類型都可以用作語句case
中的標籤switch
。您可以使用以下類型的文字:
- 整數類型:
byte
,short
,int
,long
char
String
- 任何
enum
類型
您不能使用任何其他類型作為案例標籤。
使用enum
insideswitch
語句的示例:
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;
}
注意:如果使用enum
insideswitch
語句,則不需要在case
標籤中的每個值前面寫上類名。只寫值就夠了。
GO TO FULL VERSION