比较基本数据类型:用==比较基本数据类型是比较数值是否相等如果相同则是true不同则是false
equals不能比较基本数据类型
比较引用数据类型:用双等比较的是内存地址。equals也是顶级父类(Object类)的方法,Object类中equals也是用双等进行比较。
(下图是object类中equals方法)
人们在用equals比较引用数据类型时,绝大部分都会重写此方法:比如用equals比较两个String类型时:
就是将字符串转为字符在进行比较(下图是两个String类型比较时的equals方法源码)
然后在两个包装类型比较时又有不同(下图是两个包装类型进行比较时的equals方法源码)
会将两个包装类型转换成基本数据类型比较
用双等比较包装类型(也是引用数据类型)和用equals结果也是不一样的,因为包装类型有自己的常量池.池中相同数值的内存地址是相等的。然而超过池的范围哪怕是相同数值内存地址也不同的。这就引起了==(比较的是引用数据的内存地址)为false的原因