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

Java 基礎教程:if-else 分支語句與三元運算符對比

     編輯:Java 相關知識

if-else 語句完整語法


// 單分支
if (condition) {
    // 條件為 true 執行
}

// 雙分支
if (condition) {
    // true 分支
} else {
    // false 分支
}

// 多分支
if (condition1) {
    // ...
} else if (condition2) {
    // ...
} else {
    // 以上都不滿足
}

三元運算符 (?:)

// 語法:condition ? valueIfTrue : valueIfFalse
int max = (a > b) ? a : b;
String msg = score >= 60 ? "及格" : "不及格";

// 嵌套(不推薦,可讀性差)
String grade = score >= 90 ? "優秀" : (score >= 60 ? "及格" : "不及格");

核心差異對比

維度if-else三元運算符
本質控制流語句表達式(有返回值)
可執行複雜邏輯✅ 多行語句、塊❌ 單一表達式
賦值場景需分開聲明再賦值✅ 直接內聯賦值
返回值使用不能直接作為表達式✅ 可作為方法參數、返回值
可讀性複雜邏輯清晰簡單判斷優雅
調試可在各分支打斷點難以單獨調試分支

最佳實踐指南

✅ 推薦使用三元運算符的場景

  • 簡單的條件賦值:int x = flag ? 1 : 0;
  • 方法參數內聯:print(isValid ? "OK" : "FAIL");
  • 返回值簡化:return user != null ? user.getName() : "Guest";
  • Stream 中:.map(v -> v > 0 ? v : -v)

✅ 必須使用 if-else 的場景

  • 多條語句/副作用:if (valid) { log.info(...); save(); return true; }
  • 複雜多分支:超過 2 個條件判斷
  • 需要調試特定分支
  • 條件包含複雜邏輯運算:if (user != null && user.isActive() && order.getAmount() > 100)

❌ 避免的反模式

// 1. 過度嵌套三元(不可讀)
String r = a ? (b ? (c ? "1" : "2") : "3") : "4";

// 2. 三元中執行副作用(違反函數式原則)
boolean flag = list.isEmpty() ? (log.warn("empty"), true) : false;

// 3. if-else 只做賦值卻不簡化
String msg;
if (success) msg = "OK"; else msg = "FAIL"; // 建議改三元

現代 Java 模式匹配增強 (Java 17+)


// switch 表達式 (作為表達式返回值)
String result = switch (status) {
    case SUCCESS -> "成功";
    case FAIL, ERROR -> "失敗";
    case PENDING -> "處理中";
    default -> "未知";
};

// 模式匹配 instanceof
if (obj instanceof String s && s.length() > 10) {
    System.out.println("長字符串: " + s);
}

總結

if-else 是邏輯控制基石,三元運算符是表達式簡化利器。原則:邏輯複雜用 if-else,簡單賦值用三元。代碼審查時,若三元超過一行或嵌套,堅決要求重構為 if-else。掌握這一判斷標準,是寫出整潔代碼的基本功。

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