首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 三元運算子 ?: 詳解與實戰範例

     編輯:程式設計疑難解答

語法結構


條件 ? 真值 : 假值
// 相當於
if (條件) { 真值 } else { 假值 }

原始碼解析


setFlags(clickable ? CLICKABLE : 0, CLICKABLE);
// 等同於
int flag = clickable ? CLICKABLE : 0;
setFlags(flag, CLICKABLE);

clickable 為 boolean,CLICKABLE 為 int 常數。若 clickable==true 傳 CLICKABLE,否則傳 0。

常見用法

場景範例
預設值String name = input != null ? input : "Guest";
條件賦值int level = score >= 60 ? 1 : 0;
避免 NPEString len = str != null ? str.length() : 0;
三元巢狀 (慎用)result = a > b ? "大" : a == b ? "等" : "小";

注意事項

  • ✅ 兩邊型別需相容 (會自動向上轉型)
  • ✅ 只有運算式,不可包含陳述式 (如 return, throw)
  • ❌ 濫用導致可讀性下降,複雜邏輯請改用 if-else
  • ✅ 可搭配 Optional (Java 8+):Optional.ofNullable(v).orElse(defaultVal)

進階:型別推導規則


// 整數 + 浮點數 → double
Object obj = true ? 1 : 1.0; // obj 為 Double

// 物件 + null → 物件型別
String s = true ? "hi" : null; // String

// 基本型別不可為 null
// int i = true ? 1 : null; // ❌ 編譯錯誤
// Integer i = true ? 1 : null; // ✅
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved