Java判断int与Integer是否相等空指针异常
Exception in thread “main” java.lang.NullPointerException.
一、问题描述
public class Req{
private Integer a;
public static void main(String[] args) {
Req req = new Req();
if(1 == req.getA()){
System.out.println("a等于1");
}
}
}
类似以上代码,在执行中报了空指针异常,且出错位置就在if判断中,但是if判断不就req.getA()一个地方进行了方法调用吗?而且req也进行了初始化,就算变量a未赋值,按默认初始值也是1 == null,顶多是false,为什么会空指针呢?百思不得其解,最后向朋友求助得出了答案。
二、解决
数值1为int类型,变量a为Integer引用类型,默认初值为null,其又是int的包装类,在与int进行比较时触发自动拆箱a.intValue(),而此时a为null所以就引发了空指针。
正确逻辑
public class Req{ private Integer a; public static void main(String[] args) { Req req = new Req(); if(null != req.getA() && 1 == req.getA()){ System.out.println("a等于1"); } } }