`

对象的比较

    博客分类:
  • java
阅读更多
http://zhidao.baidu.com/question/90091886.html?si=8

众所周之,String 、Math、还有Integer、Double。。。。等这些封装类重写了Object中的equals()方法,让它不再比较句柄(引用),而是比较对象中实际包含的整数的值,即比较的是内容。  而Object的equals()方法比较的是地址值。
1.为什么要重写hashCode方法?

我们应该先了解java判断两个对象是否相等的规则
首先,判断两个对象的hashCode是否相等

如果不相等,认为两个对象也不相等
如果相等,则判断两个对象用equals运算是否相等
如果不相等,认为两个对象也不相等
如果相等,认为两个对象相等



我们在equals方法中需要向下转型,效率很低,所以先判断hashCode方法可以提高效率

2.首先,判断两个对象的hashCode是否相等

如果不相等,认为两个对象也不相等
如果相等,则判断两个对象用equals运算是否相等
如果不相等,认为两个对象也不相等
如果相等,认为两个对象相等



我们在equals方法中需要向下转型,效率很低,所以先判断hashCode方法可以提高效率
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics