先来看看 等号(==)和 equals() 的区别
等号(==)
对比对象实例的内存地址来判断是否是同一对象实例;也可以说是判断对象实例是否物理相等。
equals()
当对象没有重写Object的equals方法时,equals方法判断的是对象实例的ID,也就是内存地址,是否是同一对象实例;
该方法就是使用等号(==)的判断结果。
Object类的源码如下:
当对象所属的类重写equals方法时,要根据自身逻辑来判断是否相等。
而 Java里包装类型可以和基本类型直接用==号比较吗?
我们再来看个示例
但是
可以看出 java.lang.Integer 这个包装类型, 还是使用 java.lang.Integer.equals(Object) 吧
。。。。。。
追答你追问了什么?
追问那基本类型和引用类型比较呢?
追答看上面的结果
虽然 JDK 自动装箱拆箱 比较 引用类型==基本类型 看上去没有问题
但是 只要涉及到 引用类型, 建议都使用 equals 来比较