问题1:

java比较两个对象,除了equals,为什么还要重写hashcode方法?

基本类型比较,用==就可以了。

对象比较,equals比较是对象的内存地址,hashcode比较的也是对象的内存地址的换算结果(因为Object中的hashCode方法返回的是对象本地内存地址的换算结果,不同的实例对象的hashCode是不相同的)。

有时候根据自己的业务逻辑,重写了equals,如果不重写hashcode,两个对象的内存地址肯定不一样,hashcode肯定不一样,那么两个对象肯定不一样,可能跟业务逻辑

不符。比如本来两个对象的两个属性是一样的,这两个对象业务上应该是相等的,但是不重写hashcode,则这两个对象是不相等的,就有矛盾了。比如往HashSet里面添加对象。

http://blog.csdn.net/jiangwei0910410003/article/details/22739953

问题2:

重写hashCode为什么都有31?这是做什么的?

http://www.iteye.com/topic/257191

http://www.iteye.com/topic/680433

问题3:

object自己的hashCode方法具体是怎么实现的?

public native int hashCode();

native关键字,是java同c语言打交道的接口

见   http://www.enet.com.cn/article/2007/1029/A20071029886398.shtml

好深奥,跟jvm打交道

http://xinglongbing.iteye.com/blog/343484

问题4:

如果两个对象相等,则hashcode相等;如果hashcode相等,则两个对象可能相等也可能不相等。

两个在equals的意义下相等(equal)的对象应该有相等的hash codes(但并没有说hash codes相等就一定equals)

http://bbs.csdn.net/topics/350172637

http://java-min.iteye.com/blog/1416727

可以参考文档地址如下:http://aiou.iteye.com/blog/1973712

最新文章

  1. 【原】关于Python中setuptools安装的问题
  2. maven中央仓库访问速度太慢的解决办法
  3. Windows操作系统待整理
  4. Oracle数据库,非空约束、主键约束、外键约束、唯一约束
  5. 【maven + hibernate(注解) +spring +springMVC】 使用maven搭建项目
  6. NOIP2006 金明的预算方案
  7. 开发安全的Web程序
  8. 判断richtextbox选中的是否为图片
  9. Linux 网络配置(固定IP)
  10. 插入数据显示 Duplicate entry '4913' for key 'user_id'
  11. (转)最小二乘法拟合圆公式推导及vc实现[r]
  12. easyui跨iframe属性datagrid
  13. android setCompoundDrawables和setCompoundDrawablesWithIntrinsicBounds差别
  14. ANTLR4权威參考手冊(一)
  15. jQuery、Ajax分页
  16. 从一个实例谈谈postgresql索引锁
  17. git使用习惯
  18. Selenium 3----定位一组元素+多表单切换+多窗口切换
  19. falcon常用参数解析
  20. 【UOJ#246】套路(动态规划)

热门文章

  1. ext.apply和ext.applyIf
  2. 《asp.net mvc3 高级编程》第二章 控制器
  3. window.onload() 等待所有的数据加载都完成之后才会触发
  4. 【行为型】TemplateMethod模式
  5. 探究Android SQLite3多线程
  6. maven学习心得
  7. 最近国外很拉风的,,基于.net 的一个手表
  8. 转:Yii实战中8个必备常用的扩展,模块和widget
  9. DataGridView DataGridViewCheckBoxColumn编辑时实时触发事件
  10. i++ ++i的原子性