黑马程序员技术交流社区

标题: 关于hashcode和equals的问题 [打印本页]

作者: 下海的鱼儿    时间: 2015-4-23 19:46
标题: 关于hashcode和equals的问题
hashcode和equals都是比较2个对象是否相等的吗?主要要的区别是什么?我只知道默认hashcode比较的是两个对象的地址值,equals在不重写的情况下(默认)比较的是两个对象的什么(是基本属性吗)?多谢指导
作者: rolan    时间: 2015-4-23 20:35
我刚才也看到这一节,貌似hashcode是返回一个哈希码值,而equals才是比较两个对象的地址是否相等,如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
作者: shield    时间: 2015-4-23 20:55
equals方法是object类定义的对象之间的比较方法,而像对象之间的直接“==”就可以看做调用equals方法,而hashcode方法你可以看做是对象的一个标签,这个标签是一个整型,而hashcode()方法你可以看做是这个对象活得hashcode这个标签的方法。在hashset集合中,元素之间比较就是先比较hashcode标签再调用equals方法来确定元素是否相等
作者: 混乱的世界    时间: 2015-4-23 21:35
你可以看下Object的源代码,equals上面的注释有这么一句话 which states      * that equal objects must have equal hash codes.就是说equals判断相同必须是hashcode相同





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