Integer类型和int类型作比较出现空指针异常

错误重现


User user =new User();

user.setFullName("kobe");

user.setMobile("177****8028");

user.setCount(null);

// 获取count的值

Integer num = user.getCount();

if(num ==0){

System.out.println("相等");

}

运行结果:

java.lang.NullPointerException

装箱和拆箱

在JDK1.5以后基本数据类型和对应的包装类做比较时会自动拆箱和装箱,我们以Integer和int为例来看看具体拆箱和装箱所做的操作。
  // 装箱操作 int -> Integer
        int i = 5;
        Integer integer = new Integer(i);

        // 拆箱操作:Integer -> int
        int num = integer.intValue();

拆箱的时候实际上是调用了intValue()方法。

原因:

Integer类型和int作比较会自动拆箱,由于Interger类型的对象是null,这时候自动拆箱调用intValue()方法就会报NullPointerException。所以基本类型和对应包装类作比较时要判断包装类是否有可能为null,不然就会出现这种错误。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。