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

Java Boolean 判斷邏輯詳解:if 條件中 true/false 的執行流程與常見誤區

     編輯:程式設計綜合問答

程式碼情境

Boolean flag; // 包裝類型,預設 null
if (flag)
    i = 1;
else
    i = 2;

執行結果分析

flag 值if 判斷結果i 最终值備註
true真1自動拆箱為 true
false假2自動拆箱為 false
null拋出 NullPointerException—⚠️ 關鍵陷阱:拆箱 null 會崩潰

底層機制:自動拆箱

// 編譯器轉換後等價於
if (flag.booleanValue()) // 若 flag 為 null → NPE

最佳實踐:防禦性程式設計

寫法一:明確非空判斷 (推薦)

if (Boolean.TRUE.equals(flag)) { // null 安全,回傳 false
    i = 1;
} else {
    i = 2;
}

寫法二:三元運算子 + 預設值

i = (flag != null && flag) ? 1 : 2;

寫法三:基本型別 boolean (效能最佳)

boolean flag; // 預設 false,無 null 問題
// ...
if (flag) i = 1; else i = 2;

補充:數值與 Boolean 的轉換規則

  • C/C++:0 為假,非 0 為真。
  • Java:無隱含轉換。if (1) 編譯錯誤,必須 if (flag) 或 if (count > 0)。
  • JavaScript:0, null, undefined, '', NaN 為 falsy,其餘 truthy。

總結

使用 Boolean 包裝類時務必處理 null,否則運行時拋 NPE。優先使用基本型別 boolean,或用 Boolean.TRUE.equals() 安全判斷。

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