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

Java 分支結構詳解:if-else、switch 多重選擇與最佳實踐

     編輯:Java 程式設計入門

Java 分支結構詳解:if-else、switch 多重選擇與最佳實踐

循序結構無法判斷選擇,需分支結構控制程式流程。Java 提供 if 與 switch 兩大分支語句。


if 語句

單一 if

if (布林運算式) {
    // true 時執行
}

if-else

if (布林運算式) {
    // true
} else {
    // false
}

if-else if-else 多重判斷

if (條件1) { }
else if (條件2) { }
else if (條件3) { }
else { /* 以上皆否 */ }

規則: 最多一個 else,置於所有 else if 之後;一旦匹配跳過其餘分支。

巢狀 if

if (x == 30) {
    if (y == 10) {
        System.out.println("X=30 and Y=10");
    }
}

switch 語句

判斷變數是否等於某組常量值,適用於有限離散值的等值比較。

語法 (Java 11 及之前)

switch (運算式) {
    case 值1:
        // 程式碼
        break; // 可選,省略則貫穿執行下一 case
    case 值2:
    case 值3: // 共用同一處理
        // 程式碼
        break;
    default: // 可選,無匹配時執行
        // 程式碼
}

switch 規則

  • 運算式型別:byte, short, int, char、String (JDK 1.7+)、enum。
  • case 值必須為編譯期常量,型別與運算式相容。
  • 匹配後從該 case 開始執行,遇 break 或結束跳出。
  • 無 break 則貫穿執行後續 case(常用於合併情況)。
  • default 置於最後,無需 break。

範例:等級判斷

char grade = 'C';
switch (grade) {
    case 'A': System.out.println("優秀"); break;
    case 'B':
    case 'C': System.out.println("良好"); break; // B、C 同處理
    case 'D': System.out.println("及格"); break;
    case 'F': System.out.println("需努力"); break;
    default: System.out.println("未知等級");
}
System.out.println("你的等級是 " + grade);
// 輸出:良好 / 你的等級是 C

Java 12+ Switch 表達式 (預覽) / Java 14 標準化

現代寫法更簡潔、無貫穿風險、可作為運算式返回值:

Arrow 語法 (無貫穿)

String result = switch (grade) {
    case 'A' -> "優秀";
    case 'B', 'C' -> "良好";
    case 'D' -> "及格";
    case 'F' -> "需努力";
    default -> "未知等級";
};

傳統 case...: 配合 yield 返回值

int score = switch (grade) {
    case 'A': yield 90;
    case 'B': yield 80;
    case 'C': yield 70;
    default: yield 0;
};

選擇建議

場景推薦
布林條件、範圍判斷、複雜邏輯if-else
單一變數對多個常量值等值比較switch
需要返回值、簡潔表達Switch 表達式 (Java 14+)

常見錯誤與技巧

  • 忘記 break: 導致非預期貫穿,建議加註釋 // fall through 或改用新語法。
  • 條件順序: if-else if 應將最可能/最具體條件前置。
  • 空語句陷阱: if (x > 0); { ... } 分號導致區塊無條件執行。
  • switch 字串 null: JDK 1.7+ switch(null) 拋 NullPointerException,需先非空檢查。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved