为了账号安全,请及时绑定邮箱和手机立即绑定

equals()到底是比较什么

equals()比较的到底是对象的引用是否指向同一内存地址,还是比较的对象的值是否相同

正在回答

4 回答

那要看调用equals()方法的对象所对应的类 里的equals方法是怎么写的了。

举个例子。

一般的类没有重写Object类的equals()方法,比如你随便定义一个类Student,那么当我Student t = new Student();t.equals(??)这里就会调用父类的equals()方法。Object类里的equals方法比较的是地址,所以我写的这个类比较的也是地址。

而有些类为了一些使用上的方便合理,于是便重写了equals()方法。比如String类,当我们使用字符串时,当他们内容相同时,我们会认为他们没有什么不同,我们希望两个内容一致的String对象用equals()比较会返回true。而String类中的equals()方法正是这样重写的,只要内容相等,A.equals(B)就是true,在String的对象调用equals()方法时,就是比较内容。

当然,我们也可以自己去重写equals()方法,从而让我们自己写的类达到自己的期望。比如说,依然是一个Student类,我现在希望说如果两个Student姓名,学号相同,我就认为他们是一样的。我就可以重写equals()方法,如果两个对象的id、name全相等,那么就返回true,否则返回false。

所以记住Object类里的equals()方法比较的就是地址,而所有的类都直接或间接继承自Object,这些子类的equals()方法是比较什么,就看他们是如何重写equals()的。重写equals()最典型的例子就是String类了。

2 回复 有任何疑惑可以回复我~
#1

小僧一戒 提问者

非常感谢!
2015-09-24 回复 有任何疑惑可以回复我~

就像 两个人,比较长相一样不。  也就是内容一样不

0 回复 有任何疑惑可以回复我~

没重写的equals()就是比较的就是地址,重写了比较的就是你自己定义的内容

0 回复 有任何疑惑可以回复我~

内容是否相等

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

equals()到底是比较什么

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信