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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© TNTTNT 中级黑马   /  2014-3-27 13:31  /  1552 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Object中的hashCode()和equals()这两个方法分别比较的是什么,‘
如果重写了Object中的这两个方法之后,又是怎样比较的呢:Q:Q:Q

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

2 个回复

倒序浏览
hashCode()的返回值是jdk根据对象的地址或者字符串或者数字算出来的int类型的数值 ,hashcode相等,则对象一定一样;hashcode 不相等,对象 也可能相等(不是相同)所以如果hashcode相等,需要再进行equals()再继续判断。equals()比较是内存对象在内存中的地址值。如果重写的话,就会按照你重写的那个方式进行比较。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
HashCode 的作用, 如果有一个集合有一万个元素,要保证每个元素的不同可以用HashCode算法,算出这些元素的HashCode值,并按照它们的HashCode值把该元素存放到相应 的区域,则再放入元素时就可以根据该元素的HashCode值去找到相应的区域,与该区域的元素进行比较,如果存在则不放入。这样可以节省时间。增加运行的效率。
而equals方法,可以这样重写, 首先判断两个对象是否是同一个对象 ,如果为同一个对象比较直接返回为真。  
如果其比较的对象不为Null且是同一个类的实例或子类的实例时,进行一次强转 ,然后再去进行相应的属性的比较 。 这个规则你可以自己制定 。 什么样的情况相等或不相等由你自己判定。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马