public int shu(double a, double b) {
return a > b ? a : b;
}
**功能**:返回 a 和 b 中較大的值 (求最大值)。
條件表達式 ? 真值 : 假值
a > b:條件表達式,結果為 boolean。a:條件為 true 時返回的值。b:條件為 false 時返回的值。
public int shu(double a, double b) {
if (a > b) {
return a;
} else {
return b;
}
}
a、b 均為 double,返回類型為 double,但方法聲明返回 int,**會發生隱式窄化轉換 (double -> int),精度丟失**。
// 1. 返回類型改為 double
public double shu(double a, double b) {
return a > b ? a : b;
}
// 2. 或參數改為 int
public int shu(int a, int b) {
return a > b ? a : b;
}
// 3. 顯式轉型 (明確意圖)
public int shu(double a, double b) {
return (int) (a > b ? a : b);
}
| 場景 | 示例 |
|---|---|
| 求最大/最小值 | max = a > b ? a : b; |
| 默認值處理 | String name = input != null ? input : "默認"; |
| 條件賦值 | int level = score >= 60 ? 1 : 0; |
| 避免空指針 | int len = str != null ? str.length() : 0; |
| 三元運算符嵌套 (慎用) | grade = score > 90 ? 'A' : (score > 60 ? 'B' : 'C'); |
int 和 double 混用結果為 double。a > b ? a : b 是「若 a 大於 b 則取 a 否則取 b」的簡潔表達。理解其類型規則、副作用 (僅求值一次)、可讀性邊界,是寫好 Java 表達式的基礎。