在自动装箱后为原始数据类型指定null

时间:2015-06-24 10:10:54

标签: java nullpointerexception

我在FirstRain

被问到这个问题

当一个人做这样的事情时,

int j = null;

导致 类型不匹配:无法将null转换为int。

现在

    Integer i = null;
    int n = i;
    System.out.println(n);

为什么打印n会导致 NullPointerException ,即使原始数据类型不允许使用null。

为什么它没有导致 类型不匹配:无法将null转换为int。

3 个答案:

答案 0 :(得分:3)

实际上int n = i;会在NullPointerException取消装箱时抛出Integer,因为取消装箱会涉及取消引用i中存储的空引用。

答案 1 :(得分:3)

Integer表达式可以具有空值。如果您的程序尝试autounbox null,它将抛出NullPointerException

答案 2 :(得分:1)

您无需打印n。当您尝试取消装箱为空时,NPE会抛出上一行。