问题描述
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 行的地方 int 原始类型中放置一个整数,则一切正常。那么,这里的问题是,为什么 java 拆箱不在内部处理这个 null 值并将 null 分配给名为 value 的变量?
解决方法
那么,这里的问题是,为什么 java 拆箱不在内部处理这个空值并将空值分配给名为 value 的变量?
您的 value
变量是一个 int
原语。原语不能有 null
值。只有对象可以。
int
是原始类型。
null
不是原始类型,它代表一个不存在的对象引用,不能自动装箱为原始类型。
int value = null;
可以被视为您所要求问题的更“明确”版本,甚至无法编译。