Java 拆箱的意外行为

Unexpected behaviour with Java unboxing

Map<Integer, Integer> map = new HashMap<>();
map.put(1, 1);
int value = map.get(2);
System.out.println(v);

在执行上面的代码时,我发现了以下异常 Exception in thread "main" java.lang.NullPointerException

但是如果在第 3 行的 place int 原始类型中放置一个 Integer,则一切正常。所以,这里的问题是为什么 java 拆箱不在内部处理这个 null 值并将 null 分配给名为 value 的变量?

So, the question in here is why doesn't java unboxing take care of this null value internally and assign null to variable called value?

您的 value 变量是一个 int 原语。原语不能有 null 值。只有对象可以。

int 是原始类型。

null 不是原始类型,它表示不存在的对象引用,不能自动装箱为原始类型。

int value = null; 可以被视为您所问问题的更“明确”版本,甚至无法编译。