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

Java 流程控制核心:if-else 條件判斷與 switch 多重選擇詳解

     編輯:Java 相關知識

Java 條件控制語句全解析

條件控制是程式邏輯的基石。Java 提供 if-else 與 switch 兩大機制,適用於不同複雜度的分支決策。

1. if-else 條件判斷

基本語法

if (布林表達式) {
    // 為真時執行
} else {
    // 為假時執行
}

多重條件鏈(else-if 階梯)

int score = 85;
if (score >= 90) grade = 'A';
else if (score >= 80) grade = 'B';
else if (score >= 70) grade = 'C';
else if (score >= 60) grade = 'D';
else grade = 'F';

執行規則:由上而下評估,第一個符合條件的區塊執行後,跳過其餘。

巢狀 if

if (user.isLoggedIn()) {
    if (user.hasPermission("ADMIN")) {
        // 管理員功能
    } else {
        // 一般使用者功能
    }
}

2. switch 多重選擇

傳統 switch(Java 11 前)

switch (條件表達式) {
    case 常數值1:
        陳述句;
        break; // 關鍵:防止 fall-through
    case 常數值2:
        陳述句;
        break;
    default:
        陳述句;
}

支援型別演進

Java 版本支援型別
1.0~1.4int, short, byte, char
5.0+ enum 列舉型別
7.0+ String
12+ (preview) / 14+ (標準)switch 表達式、型別模式匹配

現代 Switch 表達式(Java 14+)

// 箭頭語法:無 fall-through,可直接回傳值
String result = switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> "6";
    case TUESDAY                -> "7";
    case THURSDAY, SATURDAY     -> "8";
    case WEDNESDAY              -> "9";
    default                     -> throw new IllegalStateException("Invalid: " + day);
};

3. 實務範例:字元統計器

import java.io.IOException;

public class CharCounter {
    public static void main(String[] args) throws IOException {
        int digits = 0, spaces = 0, others = 0;
        int ch;
        while ((ch = System.in.read()) != '\n') {
            switch (ch) {
                case '0': case '1': case '2': case '3': case '4':
                case '5': case '6': case '7': case '8': case '9':
                    digits++; break;
                case ' ': case '\t':
                    spaces++; break;
                default:
                    others++;
            }
        }
        System.out.printf("數字:%d 空白:%d 其他:%d%n", digits, spaces, others);
    }
}

4. 關鍵差異與選擇指南

特性if-elseswitch
條件型別任意布林表達式離散常數值(整數、字元、字串、enum)
範圍判斷支援(>、<、between)不支援(需列舉所有值)
效能線性評估JVM 可能優化為查找表/跳躍表
可讀性少數條件適合多固定值分支更清晰

5. 常見錯誤與最佳實務

  • 漏寫 break:導致 fall-through,非預期執行後續 case。
  • 字串 switch 為 null:會拋 NullPointerException,先檢查非空。
  • 布林變數用 switch:改用 if-else 更直觀。
  • enum 使用 switch:編譯器可檢查是否覆蓋所有值(加 default 避免未來新增值漏處理)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved