hashcode equals和==的区别
来源:互联网 发布:淘宝网李宁专卖店 编辑:程序博客网 时间:2024/05/20 11:34
先说==和equals的区别
如果对象是基本类型的话只能用==
如果是引用类型的话 equals比较的是两个对象的值是否相等 而==比较的是两个对象是否指向同一个内存地址
hashcode和equals()区别:
1、hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的;
2、如果两个对象相同,就是适用于equals(java.lang.Object) 方法,那么这两个对象的hashCode一定要相同;
3、如果对象的equals方法被重写,那么对象的hashCode也尽量重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致,否则就会违反上面提到的第2点;
4、两个对象的hashCode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object) 方法,只能够说明这两个对象在散列存储结构中,如Hashtable,他们“存放在同一个篮子里”。
最后,我们来看一个具体的示例吧,
这个输出的结果:
以上这个示例,我们只是重写了hashCode方法,从上面的结果可以看出,虽然两个对象的hashCode相等,但是实际上两个对象并不是相等;,我们没有重写equals方法,那么就会调用object默认的equals方法,是比较两个对象的引用是不是相同,显示这是两个不同的对象,两个对象的引用肯定是不定的。这里我们将生成的对象放到了HashSet中,而HashSet中只能够存放唯一的对象,也就是相同的(适用于equals方法)的对象只会存放一个,但是这里实际上是两个对象a,b都被放到了HashSet中,这样HashSet就失去了他本身的意义了。
此时我们把equals方法给加上:
此时得到的结果就会如下:从结果我们可以看出,现在两个对象就完全相等了,HashSet中也只存放了一份对象。
阅读全文
0 0
- "=="、equals和hashCode的区别
- “==”、equals 和 hashCode 的区别
- hashcode equals和==的区别
- java ==和equals、equals和hashCode的区别
- java中的 hashcode() 、equals() 和==的区别
- Java中equals方法、==和hashCode的区别
- java中equals,hashcode和==的区别
- equals和==及hashcode的区别
- 详细解释 hashcode equals() "==" 的区别和联系
- java中equals,hashcode和==的区别
- ==、equals、hashcode的区别和联系
- java中“==”、equals和hashCode的区别
- JAVA学习笔记 ---equals、hashcode和==的区别
- hashcode、equals和==之间的区别
- java中equals,hashcode和==的区别
- Java中==,equals和hashCode的区别
- hashCode与equals和==的区别与联系
- java中equals,hashcode和==的区别
- redis-hash类型简单操作
- mysql命令gruop by报错this is incompatible with sql_mode=only_full_group_by
- 关于Block Formatting Context--BFC和IE的hasLayout
- 设置nginx开机自动启动方法
- Gates UVA
- hashcode equals和==的区别
- 【OpenCV入门教程之二】 一览众山小:OpenCV 2.4.8 or OpenCV 2.4.9组件结构全解析
- oracle--高级查询(一)
- JavaWeb-Maven Profile切换数据库连接配置
- Azkaban安装(一)
- MyEclipse:An internal error occurred during: "Build Project". GC overhead limit exceeded
- idea中如何给类中的属性生成set和get方法
- unity日志查看器
- ios逆向分析进阶之关键字加密还原