我想知道编译器如何读取此代码。
public class obj {
public static void main(String[] args) {
Integer obj = null; //line4
int x = obj; //line 5
System.out.println(x); //line6
}
}
我的理解是第5行可以自动取消装箱,这意味着它会将Integer
类型转换为原始int
。
但我没有在x
上调用任何方法,只是打印。为什么给我一个NullPointerException
?
答案 0 :(得分:3)
这里的Autoboxing意味着
int x = obj;
实际上是:
int x = obj.intValue();
因此是NullPointerException,因为obj为null。
答案 1 :(得分:0)
Java有一个名为 autoboxing 的东西,其中Integer对象自动转换为int主要。
答案 2 :(得分:0)
查看字节码
javap -c com.interviews.practise.obj