首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java switch 語句語法詳解:多分支判斷的優雅寫法

     編輯:Java 相關知識

switch 語法結構

switch (表達式) {
    case 值1:
        功能代碼1;
        [break;]
    case 值2:
        功能代碼2;
        [break;]
    ...
    default:
        功能代碼;
        [break;]
}

語法規則

  1. 表達式型別僅限 byte、short、char、int 四種(Java 7+ 支援 String,Java 12+ 支援模式匹配)。
  2. case 後接常數或常量,不可為變數。
  3. 功能代碼可寫多行。
  4. break 可選,用於結束 switch;缺失時會「貫穿」執行後續 case。
  5. case 可任意多個。
  6. default 位置任意,功能類似 else。

執行流程

表達式值與某 case 值匹配 → 從該處向下執行 → 遇 break 或 switch 結束才停止。

經典範例:根據月份取天數(不考慮閏年)

寫法一:完整列舉(冗長)

int month = 10, days = 0;
switch (month) {
    case 1:  days = 31; break;
    case 2:  days = 28; break;
    case 3:  days = 31; break;
    case 4:  days = 30; break;
    case 5:  days = 31; break;
    case 6:  days = 30; break;
    case 7:  days = 31; break;
    case 8:  days = 31; break;
    case 9:  days = 30; break;
    case 10: days = 31; break;
    case 11: days = 30; break;
    case 12: days = 31; break;
}
System.out.println(days);

寫法二:合併同值 case + default 簡化(推薦)

int month = 10, days = 0;
switch (month) {
    case 2:
        days = 28; break;
    case 4: case 6: case 9: case 11:
        days = 30; break;
    default:
        days = 31;
}
System.out.println(days);

利用貫穿特性合併 30 天月份,其餘歸 default,代碼極度精簡。

進階技巧:區間判斷轉換為等值判斷

switch 僅支援等值比較,但可透過數學轉換處理區間。例:分數 0-100 轉等級(A:90-100, B:80-89...)。

int score = 87;
switch (score / 10) {  // 取十位數,將 0-100 映射為 0-10
    case 10:
    case 9:
        System.out.println('A'); break;
    case 8:
        System.out.println('B'); break;
    case 7:
        System.out.println('C'); break;
    case 6:
        System.out.println('D'); break;
    default:
        System.out.println('E');
}

注意:複雜區間判斷仍建議用 if-else if-else,switch 強項在「離散值等值匹配」。

switch vs if-else 對比

維度if-else if-elseswitch
適用場景任意條件(區間、複合邏輯)離散值等值匹配
結構清晰度條件多時顯冗長結構清晰、易讀
執行效率順序判斷,稍慢跳轉表優化,稍快

實務中視邏輯類型靈活選擇。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved