在网上突然看到这个点,自己的话一直没有遇到过,记录起来,遇到解决会比较方便
举个简单例子,其他类型通用
int a = 0;
Integer b = null;
if (a != b) {
System.out.println("基本数据和包装类比较空指针异常示例");
}
这里基本数据和包装类比较出现了空指针异常,为什么呢?
a != b.intValue()
这样是不是就比较直观点了,就是自动拆箱出现了问题
那有什么办法解决吗?炒鸡简单
int a = 0;
Integer b = null;
if (!Objects.equals(a, b)) {
System.out.println("基本数据和包装类比较正常示例");
}
我们只需要使用java.util.Objects工具包进行判断就不需要考虑自动拆装箱问题了
额外说两点
- 自动拆箱 包装类——>基本数据类型 (原理是调用了xxxValue方法)
- 自动装箱 基本数据类型——>包装类 (原理是调用了valueOf方法)