黑马程序员技术交流社区

标题: 重写equals作用是什么? [打印本页]

作者: 曾乐祥    时间: 2016-6-20 13:47
标题: 重写equals作用是什么?
重写equals作用是什么?求解
作者: 涟漪不起    时间: 2016-6-20 17:43
object中的equals方法默认比较的是地址值。
如果不重写,比较两个不同对象时。他们的地址值肯定不同。返回false。
重写以后,equals方法里比较如果内容相同就返回true。

就可以比较属性相同的两个对象“相同”了。
作者: 孟小垚    时间: 2016-6-20 19:25
比较对象的是否是同一个对象!如果不重写的话,都是false,就没有意义了!
作者: maikouliujian    时间: 2016-6-20 22:00
重写的目的是为了让两个属性值一样的对象通过equals对比得出的结果是ture
作者: 黑夜的灬黑    时间: 2016-6-20 22:28
Object中的equals比较的是地址值,而一般我们需要比较的是对象的属性
作者: crazymen    时间: 2016-6-20 22:44
equals的底层调用了hashcode和getclass,在比较来那个引用数据类型的时候,不重写,就无法准确比较
作者: eyesee    时间: 2016-6-20 22:45
作比较的时候要用到
作者: 159269236    时间: 2016-6-20 23:30
不重写就是比较的是对象的地址值,重写之后可以比较对象的属性
作者: 读书||养猪    时间: 2016-6-21 00:15
不重写默认调用object类的方法 比较的是地址值
重写后比较的是属性值
作者: abcflash    时间: 2016-6-21 21:24
需要比较地址才重写
作者: 1316582449    时间: 2016-6-26 11:52
默认equals在比较两个对象时,是看他们是否指向同一个地址的。
但有时,我们希望两个对象只要是某些属性相同就认为他们的quals为true。比如:
Student s1 = new Student(1,"name1");
Student s2 = new Student(1,"name1");
如果不重写equals的话,他们是不相同的,所以我们要重些equals,判断只要他们的id和名字相同equals就为true,在一些集合里有时也这样用,集合里的contain也是用equals来比较
作者: Ake丶    时间: 2016-6-26 17:48
crazymen 发表于 2016-6-20 22:44
equals的底层调用了hashcode和getclass,在比较来那个引用数据类型的时候,不重写,就无法准确比较 ...

Object的equals底层是==,你说的hashCode和getClass是Object的toString()方法。别搞混了
作者: 代码是什么    时间: 2016-6-26 23:30
比较属性
作者: 逆风搁浅    时间: 2016-6-27 16:02
比较属性用的,本来是比较地址值没意义.地址值用==比较就可以
作者: 1316582449    时间: 2016-6-27 18:34
默认equals在比较两个对象时,是看他们是否指向同一个地址的。
但有时,我们希望两个对象只要是某些属性相同就认为他们的quals为true。比如:
Student s1 = new Student(1,"name1");
Student s2 = new Student(1,"name1");
如果不重写equals的话,他们是不相同的,所以我们要重些equals,判断只要他们的id和名字相同equals就为true,在一些集合里有时也这样用,集合里的contain也是用equals来比较
作者: 孟小垚    时间: 2016-6-27 19:01
比较是否是同一个对象
作者: 神马海盗    时间: 2016-6-27 19:21
比较两个是否相同




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2