默认情况

- 双等号==,比较的是内存地址。
- equals(),默认比较的是内存地址。
- hashCode(),默认返回的是object的内存地址。

String中方法改写的情况

经常会遇到需要override equals()和hashCode()的情况,比如String就改写了这两个方法。
String equals() 的实现是首先判断两个字符串内存空间是否一致,然后对每一位字符进行比较。
String hashCode() 的实现是对每一位字符*31然后累加。

Equals()和HashCode()的契约

Java中两者有一个契约:
- 如果两个对象相等的话,即equals()返回true的时候,它们的hashCode()必须相等。
- 但如果两个对象的hashCode()相等的话,这两个对象(用equals()判断)不一定相等。
举例来说,在HashMap中存取键值对的时候用到了这两个方法:
- 用hashCode()计算Entry在数组中的位置
- 可能出现碰撞的情况,即多个Entry的hash code相同,存在同一个”格”中
- 这时,需要用equals()来判断key是否相同
一般来说equals()和hashCode()的override都是绑定出现的,因为要保证上述的契约关系。

参考

- http://www.cnblogs.com/xudong-bupt/p/3960177.html
- http://www.importnew.com/8701.html

转载于:https://www.cnblogs.com/maxstack/p/7645461.html

Java双等号,Equals(),HashCode()小结相关推荐

  1. java 双等号(==) 与equals方法的介绍和区别

    java 双等号(==) 与equals方法的介绍和区别 1.基本数据类型与equals方法 == 用于比较基本数据类型时,比较的是值 ==用于比较引用数据类型时,比较的是地址 equals方法在Ob ...

  2. java 双等号(==) 与equals方法的使用区别

    java 双等号(==) 与equals方法的区别 == 用于比较基本数据类型时,比较的是值 ==用于比较引用数据类型时,比较的是地址 equals方法在Object类中比较的也是地址,因为在低层也是 ...

  3. Java中的equals学习小结

    Java中的equals是十分重要的,和= =要区别开来,最近在看孙卫琴的JAVA面向对象编程一书,觉得对其阐述写的不错,所以现在小结其 主要内容,而且要将 = =和 equals列为重要的对比概念来 ...

  4. java双等号和equals_JAVA编程基础篇:hashCode的特性和作用

    hashCode作用可以归结为:加速查找速度 hashCoed 的特性 (1)HashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,HashCode经常用于确定对象的存 ...

  5. java双等号和equals_Java中的 equals和双等号,你懂吗?

    点击蓝色"程序员的时光 "关注我 ,标注"星标",及时阅读最新技术文章! 在说equals方法与"=="之前,我们先来回顾一下Java中的数 ...

  6. java双等号比较字符串,Java与两个字符串==比较是错误的?

    ==运算符比较对象引用,而不是String的值. 要比较String的值,请使用String.equals方法: "231".equals(parts[0]); Java中的任何其 ...

  7. 【Java】java中 ==,equals,hashcode

    ==运算符是判断两个对象是不是同一个对象,即他们的地址是否相等 object类中equals与==是等效的 覆写equals更多的是追求两个对象在逻辑上的相等,你可以说是值相等,也可说是内容相等.(覆 ...

  8. 怎么做到new String(abc) == new String(abc)双等号为true呢?不是使用equals哦

    正常情况 如果按照正常情况,你面试的时候,看到这个代码,你肯定会说:结果是false. 如果我要他们是true,应该怎么做呢?有什么方法吗? String str4 = new String(&quo ...

  9. 程序猿的日常——Java基础之equals与hashCode

    equals和hashCode是我们日常开发最常使用的方法,但是因为一般都使用默认的规则,因此也很少会引起关注.不过了解他们的用途和设计的原则,还是会帮助我们更好的设计代码. equals equal ...

最新文章

  1. 辽师大计算机科学与技术专业怎么样,性价比很高的大学,辽师大的优势专业分析!家长请收藏...
  2. 泛型擦除机制、自定义注解、代理、反射
  3. Kotlin-如何创建一个好用的协程作用域
  4. 如何编写Hadoop调度器
  5. C++ 可以把变量当成函数用~~
  6. vtk类之vtkFixedPointVolumeRayCastMapper :一个固定像素点的体数据映射器
  7. wordpress 显示数学公式 (MathJax-LaTeX)
  8. NHibernate学习笔记(二):one-to-one关系映射
  9. 结构化思维:掌握这3点,分析报告不再愁
  10. 【RLchina第四讲】Model-Based Reinforcement Learning
  11. 通过上一节部署出来的 Windows instance 有时候会发现操作系统时间总是慢 8 个小时,即使手工调整好时间和时区,下次 instance 重启后又会差 8 个小时...
  12. mysql check约束无效
  13. 最简单的的树莓派安装opencv教程(一键安装)
  14. 使用TreeMap对要签名做排序ASCII码排序
  15. 【智能制造】36页精彩PPT:探讨智能制造的三驾马车
  16. 学习笔记10:程序设计基础(C)实验(函数)
  17. Linux 常用命令整理(Centos7) (时区/正则/sed/htop/screen/ln/awk/……)
  18. 武忠祥老师每日一题||不定积分基础训练(六)
  19. sql server数据库卡问题排查
  20. ios服务器管理系统,ios app云服务器

热门文章

  1. ionic + cordova 使用 cordova-gallery-api 获取本地相册所有图片
  2. 身为DATASHUO大数据工程师,我亲手制作的2016年第一期数据报告
  3. .Net 中的序列化与反序列化 (转)
  4. 推荐一个AutoCad查看器——Free DWG Viewer试用
  5. ClickHouse 在广告系统场景中的实践
  6. C++ WinForm Application Designer issue
  7. java 运行时异常与非运行时异常理解
  8. Mysql的“Limit”操作
  9. Aspose.Words 开发时遇到的问题
  10. Apache以及PHP的默认编码问题解决(详解)