错误重现
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,不然就会出现这种错误。