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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

hashcode和equals都是比较2个对象是否相等的吗?主要要的区别是什么?我只知道默认hashcode比较的是两个对象的地址值,equals在不重写的情况下(默认)比较的是两个对象的什么(是基本属性吗)?多谢指导

3 个回复

倒序浏览
我刚才也看到这一节,貌似hashcode是返回一个哈希码值,而equals才是比较两个对象的地址是否相等,如果根据 equals(Object) 方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode 方法都必须生成相同的整数结果。
回复 使用道具 举报
equals方法是object类定义的对象之间的比较方法,而像对象之间的直接“==”就可以看做调用equals方法,而hashcode方法你可以看做是对象的一个标签,这个标签是一个整型,而hashcode()方法你可以看做是这个对象活得hashcode这个标签的方法。在hashset集合中,元素之间比较就是先比较hashcode标签再调用equals方法来确定元素是否相等
回复 使用道具 举报
你可以看下Object的源代码,equals上面的注释有这么一句话 which states      * that equal objects must have equal hash codes.就是说equals判断相同必须是hashcode相同
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马