首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 中關於 Null 的 9 大核心知識點詳解

     編輯:Java 相關知識

1. null 是關鍵字,區分大小寫

Object obj = null;   // 正確
Object obj = NULL;   // 編譯錯誤
Object obj = Null;   // 編譯錯誤

2. 所有引用類型的默認值均為 null

private static Object myObj;
public static void main(String[] args) {
    System.out.println(myObj); // 輸出 null
}

局部變量必須顯式初始化,否則編譯報錯。

3. null 不是對象,也不是類型,只是特殊字面值

可賦值給任意引用類型,也可強制轉型為任意引用類型,編譯運行均不報錯:

String s = (String) null;
Integer i = (Integer) null;

4. 不能將 null 賦給基本類型變量

int i = null;        // 編譯錯誤
Integer wrapper = null;
int j = wrapper;     // 編譯通過,運行拋出 NullPointerException (自動拆箱)

5. 自動拆箱時 null 會拋出 NPE

Map<Integer, Integer> map = new HashMap<>();
map.put(1, null);
int val = map.get(1); // NPE 於此行

常見於 Map.get(key) 返回 null 後直接賦值給基本類型。

6. instanceof 檢查 null 返回 false

Integer i = null;
System.out.println(i instanceof Integer); // false

利用此特性可安全進行類型檢查後再轉型。

7. 靜態方法可通過 null 引用調用,實例方法不能

Test t = null;
t.staticMethod();   // 正常執行(靜態綁定)
t.instanceMethod(); // NPE

8. 方法參數可接受 null,建議編寫「空安全」方法

public void print(Object obj) {
    if (obj == null) { System.out.println("null"); return; }
    System.out.println(obj.toString());
}
print(null); // 優雅處理

9. == 和 != 可比較 null,其他運算符不可

String a = null, b = null;
System.out.println(a == b);   // true
System.out.println(a != b);   // false
// System.out.println(a > null); // 編譯錯誤

與 SQL 不同,Java 中 null == null 為 true。

總結

  • 理解 null 語義,避免盲目調用實例方法/字段。
  • 使用 Optional (Java 8+) 替代顯式 null 傳遞。
  • 啟用編譯器警示(-Xlint:null)與靜態分析工具(SpotBugs, SonarQube)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved