为何将未被初始化的Integer变量赋值给int变量时会抛出空指针异常?
Posted red-vel
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为何将未被初始化的Integer变量赋值给int变量时会抛出空指针异常?相关的知识,希望对你有一定的参考价值。
Integer的NullPointerException
学习包装类的时候看到这样一个问题:
public class TestBox {
Integer i;
int j;
public void go(){
j = i;//第七行
System.out.println(j);
System.out.println(i);
}
public static void main(String[] args) {
TestBox t = new TestBox();
t.go();
}
}
百度后,才知道将未初始化的Integer变量(即i)赋给int型变量j,由于未初始化的i的值为null,所以就会报错。下图是输出未被初始化的i的截图:
将第七行的j = i;改为i=j;再运行,是成功的。
为什么呢?因为java编译器会给类中未被初始化的原始数据类型的实例变量赋一个默认值。int类型的赋值为0,将0赋给一个Integer类型的变量i是合法的,所以能够执行成功。
以上是关于为何将未被初始化的Integer变量赋值给int变量时会抛出空指针异常?的主要内容,如果未能解决你的问题,请参考以下文章