hashCode 及hashcode与equals的区别
2024-09-05 03:52:08
1.hashCode是jdk根据对象的地址或者字符串或者数字算出来的int类型的数值 详细了解请 参考 [1] public int hashCode()返回该对象的哈希码值。支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能
2.equals 了解需要看这个http://www.cnblogs.com/dolphin0520/p/3592500.html
String str = new String("hello");
String str1 = new String("hello");
sys.out.println(str == str1) ;
sys.out.println(str.equals(str1));
第一个为false;第二个为true; str和str1指向两个不同的对象。是两个不同的象的引用。地址是不同的。str = str1;str1指向了第一个对象的地址。两者就变成相等的了。
第二个是因为string 对equals进行了重写。
还可以看看这个http://www.cnblogs.com/lulipro/p/5628750.html
3.public boolean equals(Object obj)
Object类中默认的实现方式是 : return this == obj 。那就是说,只有this 和 obj引用同一个对象,才会返回true。
4. 两者比较相关博客推荐http://www.cnblogs.com/lulipro/p/5628750.html
5.为什么需要重写hashCode?
这样如果我们对一个对象重写了euqals,意思是只要对象的成员变量值都相等那么euqals就等于true,但不重写hashcode,那么我们再new一个新的对象,
当原对象.equals(新对象)等于true时,两者的hashcode却是不一样的,由此将产生了理解的不一致,如在存储散列集合时(如Set类),将会存储了两个值一样的对象,
导致混淆,因此,就也需要重写hashcode()
最新文章
- Map三种遍历方式
- Mysql 5.7.10以上版本安装大坑
- JS初学之-循环生成坐标
- 生成静态页面的PHP类
- leetcode 15. 3Sum 双指针
- google浏览器图标显示不正常怎么办
- bzoj 3679: 数字之积
- Jmeter接口测试操作
- 剑指offer(30)连续子数组和的最大值
- python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置
- <;数据结构与算法分析>;读书笔记--运行时间计算
- MATLAB——神经网络train函数
- BZOJ4764弹飞大爷——LCT
- vm 虚拟机选择启动项
- 使用pickle进行存储变量
- java面向对象之个人总结
- HTML5、CSS3与响应式Web设计入门(2)
- Ubuntu下安装使用Xfce4
- Java面向对象-面向对象编程之基本概念
- Silverlight 鼠标双击 事件
热门文章
- 常规函数模块CALL in new task 报错
- springboot Thymeleaf中格式化jsr310新日期时间类(LocalDateTime,LocalDate)--thymeleaf格式化LocalDateTime,LocalDate等JDK8新时间类
- JQ操作select项
- Xmemcached与SpringBoot实际案例
- mysql学习之join从句
- Redis 常用命令学习二:字符串类型命令
- Python笔记001-Python入门
- 20191011-构建我们公司自己的自动化接口测试框架-Util的getTestSuite模块
- 1186: 零起点学算法93——改革春风吹满地(C)
- Aso.Net Core 的配置系统Configuration--转