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

Java 基礎:boolean 數組默認值導致條件判斷失效

     編輯:程式設計疑難解答

代碼片段

class Demo {
    public static void main(String[] args) {
        String foo = "blue";
        boolean[] bar = new boolean[2];
        if (bar[0]) {
            foo = "green";
        }
        System.out.println(foo); // 輸出 blue
    }
}

現象解釋

輸出 blue 而非 green,因為:

  • boolean[] bar = new boolean[2] 創建數組時,所有元素自動初始化為默認值 false。
  • bar[0] 為 false,if (bar[0]) 條件不成立,代碼塊不執行。
  • foo 保持初始值 "blue"。

Java 基本類型數組默認值表

類型默認值
byte, short, int, long0
float, double0.0
char'\u0000' (空字符)
booleanfalse
引用類型 (Object, String, 數組等)null

最佳實踐建議

  1. 顯式初始化:不要依賴默認值,代碼可讀性更好。
    boolean[] bar = {false, false}; // 或 new boolean[]{false, true};
    
  2. 使用 Collections:List<Boolean> list = Arrays.asList(false, true); 避免基本類型數組陷阱。
  3. 靜態分析工具:SpotBugs、SonarQube 會提示「Boolean variable default value is false」等潛在問題。

延伸:對象數組陷阱

Boolean[] boxed = new Boolean[2]; // 元素默認 null
if (boxed[0]) { ... } // 拋出 NullPointerException!

包裝類型數組默認值是 null,直接用於條件判斷會拋 NPE,更危險。

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