一、基本語法
switch語句是Java中的一種流程式控制制語句,可以根據表達式的值,匹配相應的case分支執行對應代碼。其基本語法如下:
switch(expression){ case value1: //執行代碼塊1 break; case value2: //執行代碼塊2 break; ... default: //執行默認代碼塊 }
其中expression為表達式,value1、value2為常量值。case分支可以有多個,對應不同的常量值。當expression的值與某個case的常量值相等時,該case分支中的代碼塊將被執行。default分支可選,當所有case分支都不滿足時,將執行default分支中的代碼塊。
二、兼容性問題
在Java SE 5.0版本之前,switch語句只能使用枚舉類型、整數類型(byte、short、char、int)和String類型作為表達式。在Java SE 7版本之後,switch語句可以使用枚舉類型、整數類型、String類型以及對應包裝類和枚舉類型的可轉換類型,比如byte、short、char、int。
需要注意的是,對於可轉換類型,Java會先將其轉換為對應整數類型(int、byte、short),然後再進行匹配判斷。如果表達式的類型不符合要求,編譯器將報錯。
三、switch語句的注意事項
1、case分支的常量值不能重複
如下例子:
int i = 1; switch(i){ case 1: //執行代碼塊1 break; case 1: //執行代碼塊2 break; }
由於case常量值重複,編譯器將報錯。
2、case分支中不能有重複代碼
如下例子:
int i = 1; switch(i){ case 1: //執行代碼塊1 break; case 2: //執行代碼塊1 break; }
由於case分支存在重複代碼,編譯器將報錯。
3、case分支的順序
case分支的順序不會影響表達式的值與常量值的匹配,但是順序的改變會影響程序的效率。在選擇case分支的常量值時,應該把最可能出現的常量值放在前面,以提高程序的效率。
四、示例代碼
下面是一個使用switch語句的示例代碼:
public class SwitchDemo { public static void main(String[] args) { int month = 8; String monthString; switch (month) { case 1: monthString = "January"; break; case 2: monthString = "February"; break; case 3: monthString = "March"; break; case 4: monthString = "April"; break; case 5: monthString = "May"; break; case 6: monthString = "June"; break; case 7: monthString = "July"; break; case 8: monthString = "August"; break; case 9: monthString = "September"; break; case 10: monthString = "October"; break; case 11: monthString = "November"; break; case 12: monthString = "December"; break; default: monthString = "Invalid month"; break; } System.out.println("Month " + month + " is " + monthString); } }
以上代碼是一個根據月份輸出月份名稱的程序。在switch語句的表達式中,變數month的值為8。根據case分支中的常量值,匹配到case 8分支,執行其中列印字元串的代碼塊,輸出”Month 8 is August”。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/181709.html