A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曾乐祥 中级黑马   /  2016-6-20 13:47  /  1480 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

重写equals作用是什么?求解

16 个回复

正序浏览
比较两个是否相同
回复 使用道具 举报
比较是否是同一个对象
回复 使用道具 举报
默认equals在比较两个对象时,是看他们是否指向同一个地址的。
但有时,我们希望两个对象只要是某些属性相同就认为他们的quals为true。比如:
Student s1 = new Student(1,"name1");
Student s2 = new Student(1,"name1");
如果不重写equals的话,他们是不相同的,所以我们要重些equals,判断只要他们的id和名字相同equals就为true,在一些集合里有时也这样用,集合里的contain也是用equals来比较
回复 使用道具 举报
比较属性用的,本来是比较地址值没意义.地址值用==比较就可以
回复 使用道具 举报
比较属性
回复 使用道具 举报
crazymen 发表于 2016-6-20 22:44
equals的底层调用了hashcode和getclass,在比较来那个引用数据类型的时候,不重写,就无法准确比较 ...

Object的equals底层是==,你说的hashCode和getClass是Object的toString()方法。别搞混了
回复 使用道具 举报
默认equals在比较两个对象时,是看他们是否指向同一个地址的。
但有时,我们希望两个对象只要是某些属性相同就认为他们的quals为true。比如:
Student s1 = new Student(1,"name1");
Student s2 = new Student(1,"name1");
如果不重写equals的话,他们是不相同的,所以我们要重些equals,判断只要他们的id和名字相同equals就为true,在一些集合里有时也这样用,集合里的contain也是用equals来比较
回复 使用道具 举报
需要比较地址才重写
回复 使用道具 举报
不重写默认调用object类的方法 比较的是地址值
重写后比较的是属性值
回复 使用道具 举报
不重写就是比较的是对象的地址值,重写之后可以比较对象的属性
回复 使用道具 举报
作比较的时候要用到
回复 使用道具 举报
equals的底层调用了hashcode和getclass,在比较来那个引用数据类型的时候,不重写,就无法准确比较
回复 使用道具 举报
Object中的equals比较的是地址值,而一般我们需要比较的是对象的属性
回复 使用道具 举报
重写的目的是为了让两个属性值一样的对象通过equals对比得出的结果是ture
回复 使用道具 举报
比较对象的是否是同一个对象!如果不重写的话,都是false,就没有意义了!
回复 使用道具 举报
涟漪不起 来自手机 中级黑马 2016-6-20 17:43:45
楼主
object中的equals方法默认比较的是地址值。
如果不重写,比较两个不同对象时。他们的地址值肯定不同。返回false。
重写以后,equals方法里比较如果内容相同就返回true。

就可以比较属性相同的两个对象“相同”了。
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马