equals 方法是object中的方法,一些类比如String ArrayList等都会覆盖此方法的,方法一旦覆盖他们的实现原来肯定就一样,比较的东西自然就不一样了,所以equals比较的到底是什么东西,你只能去查看这个类中是否覆盖的这个方法,还有它的原代码是如何实现的,比如String类就覆盖了equals方法,比较的是2个字符串的内容是否相同。如果没覆盖,但是你又调用了,那用的就是object中的equals方法。
你也可以自己定义一个类,然后覆盖equals方法,里面写上你认为2个指向型引用或对象,该方法返回值为真的要求。比如你定义了1个person这个类,你可以把equals方法定义为name相同即返回真,或者age相同即返回为真,或者其它情况都行,随你自己便。但是如果2个person用“==”比较,返回的肯定是flase.
是不是可以这么理解,==比较的是地址,equals比较的是内容
而==用于比较引用和比较基本数据类型时具有不同的功能:
比较基本数据类型,如果两个值相同,则结果为true
而在比较引用时,如果引用指向内存中的同一对象,结果为true |