码迷,mamicode.com
首页 > 其他好文 > 详细

为何将未被初始化的Integer变量赋值给int变量时会抛出空指针异常?

时间:2020-05-28 23:53:29      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:ima   图片   变量   png   rgs   pre   stat   赋值   print   

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变量时会抛出空指针异常?

标签:ima   图片   变量   png   rgs   pre   stat   赋值   print   

原文地址:https://www.cnblogs.com/red-vel/p/12984355.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!