// 單分支
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";.map(v -> v > 0 ? v : -v)if (valid) { log.info(...); save(); return true; }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"; // 建議改三元
// 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。掌握這一判斷標準,是寫出整潔代碼的基本功。