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

Java NullPointerException 經典誤區:Integer 非 null 判斷與 Map 取值空指針

     編輯:程式設計綜合問答

錯誤代碼

Integer a = random.nextInt(); // 自動裝箱,a 永不為 null
if ((Integer)a == null) { map.put(a, 1); } // 永不進入
else { map.put(a, (Integer)map.get(a) + 1); } // map.get(a) 返回 null → NPE

原因

  1. `random.nextInt()` 返回 `int`,自動裝箱為 `Integer`,**基本類型裝箱後不可為 null**。
  2. 首次遇到某數字,`map.get(a)` 返回 `null`,自動拆箱 `null.intValue()` → **NPE**。

修正

Integer count = map.get(a);
if (count == null) map.put(a, 1);
else map.put(a, count + 1); // count 已非 null,安全拆箱
// 或 Java 8+
map.merge(a, 1, Integer::sum);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved