1."=="与equals的区别与联系
(1)“==”对于基本数据类型,只要值相等,就返回true,否则返回false。

若比较的为对象,则判断的是两个对象是否处于同一个内存地址。

(2)equals为Object类中的方法,Object中equals默认使用==来判断,因此一般来讲equals与“==”并无区别,完全相同。

Object是所有类的父类,在不少类中都对equals进行了重写,比如最常用的String类,因此在String中比较的是值,而非地址。

基本类型的包装类型,比如Boolean、Character、Byte、Shot、Integer、Long、Float、Double等的引用变量,==是比较地址的,而equals是比较内容的

String 中的equals方法

2.equals与hashcode的区别与联系
在Java中判断两个对象是否相等,有两种方法,一种是通过hashcode,另一种是通过equals

hashCode()方法和equal()方法的作用其实一样,在Java里都是用来对比两个对象是否相等一致,那么equal()既然已经能实现对比的功能了,为什么还要hashCode()呢?

因为重写的equal()里一般比较全面比较复杂,这样效率就比较低,而利用hashCode()进行对比,则只要生成一个hash值进行比较就可以了,效率很高,那么hashCode()既然效率

这么高为什么还要equal()呢?

因为hashCode()并不是完全可靠,有时候不同的对象他们生成的hashcode也会一样(生成hash值得公式可能存在的问题),所以hashCode()只能说是大部分时候可靠,并不是绝对

可靠,所以我们可以得出:

1.equal()相等的两个对象他们的hashCode()肯定相等,也就是用equal()对比是绝对可靠的。

2.hashCode()相等的两个对象他们的equal()不一定相等,也就是hashCode()不是绝对可靠的。

所有对于需要大量并且快速的对比的话如果都用equal()去做显然效率太低,所以解决方式是,每当需要对比的时候,首先用hashCode()去对比,如果hashCode()不一样,则表示这两

个对象肯定不相等(也就是不必再用equal()去再对比了),如果hashCode()相同,此时再对比他们的equal(),如果equal()也相同,则表示这两个对象是真的相同了,这样既能大大提高了

效率也保证了对比的绝对正确性!

这种大量的并且快速的对象对比一般使用的hash容器中,比如hashset,hashmap,hashtable等等,比如hashset里要求对象不能重复,则他内部必然要对添加进去的每个对象进行对

比,而他的对比规则就是像上面说的那样,先hashCode(),如果hashCode()相同,再用equal()验证,如果hashCode()都不同,则肯定不同,这样对比的效率就很高了。

equals与hashcode的区别与联系相关推荐

  1. java == hashcode,java中==和equals和hashCode的区别

    java中==和equals和hashCode的区别 == 的作用: 基本类型:比较的就是值是否相同 引用类型:比较的就是地址值是否相同(确切的说,是堆内存地址) equals 的作用: 引用类型:默 ...

  2. 【JAVA基础篇】==、equals和hashCode的区别和联系

    == 作用:比较两个操作数的关系,返回一个boolean类型的结果 具体含义:如果两个操作数是基本数据类型,比较值是否相等.如果两个操作数是引用类型,那么比较的是内存地址是否相同. equals Ob ...

  3. Java 中==和 equals 的区别, equals 和 hashCode 的区别

    ==操作符用来比较两个基本类型变量时,比较的是值:用来比较引用类型变量时,比较的是引用的地址 equals方法是基类Object的方法,用于比较两个对象的内容是否相同,Object类中equals方法 ...

  4. (转)从一道面试题彻底搞懂hashCode与equals的作用与区别及应当注意的细节

    背景:学习java的基础知识,每次回顾,总会有不同的认识.该文系转载 最近去面试了几家公司,被问到hashCode的作用,虽然回答出来了,但是自己还是对hashCode和equals的作用一知半解的, ...

  5. (转)Java中equals和==、hashcode的区别

    背景:学习辉哥总结的基础知识,从头来,直面短板. 1 问题引入及分析 请看下面的代码清单1 @Testpublic void test01() {String a = "a" + ...

  6. 深入理解equals和hashCode关系和区别

    深入理解equals和hashCode关系和区别 直入主题: 区别: 1.他们判断对象相同的方式不一样: 2.他们判断对象是否相等的准确率不一样: 改写equals时总是要改写hashcode 分享一 ...

  7. java中equals,hashcode和==的区别

    原文地址http://blog.csdn.net/hla199106/article/details/46907725 1.== java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型 ...

  8. equals()和hashCode()区别?

    equals()和hashCode() equals():反映的是对象或变量具体的值,即两个对象里面包含的值–可能是对象的引用,也可能是值类型的值. hashCode():计算出对象实例的哈希码,并返 ...

  9. Java拾遗:001 - 重写 equals 和 hashCode 方法

    2019独角兽企业重金招聘Python工程师标准>>> 重写equals方法 在Java中Object类是一个具体类,但它设计的主要目的是为了扩展,所以它的所有非final方法,都被 ...

最新文章

  1. 能量时域空间物理_5G新在哪儿(11)-下行公共物理控制信道
  2. java数据结构之枚举
  3. Python学习笔记:面向对象高级编程(完)
  4. sql server 2008学习12 事务和锁
  5. spring配置文件-------通配符
  6. 关联规则挖掘之FPGrowth算法实现
  7. 人工神经网络基本构成有哪些,常见的人工神经网络有哪几种
  8. 易语言斗鱼弹幕助手源码
  9. Win10 分页缓冲池 过大
  10. 数字转成人民币汉字大写(李刚著《疯狂Python讲义》P87,解决小数部分及多个零的问题。学习笔记)
  11. 浅谈自媒体带货底层逻辑及公众号变现操作路径
  12. ftp服务器 修改文件,ftp服务器修改文件属性的权限
  13. 移动硬盘盒芯片(SATAIII)
  14. topcoder赚钱的方法
  15. idea上一步失效:Ctrl+Alt+左箭头 Ctrl+Alt+右箭头
  16. 计算机毕业设计之java+springboot基于vue的校园交友网站
  17. 基本文本分类:电影评论文本分类
  18. 网页设计期末课程设计大作业-HTML、CSS、JS仿英雄联盟LOL官网)
  19. 微信小程序面试题大全(持续更新)
  20. 软件需求分析——需求工程过程

热门文章

  1. 九九乘法表的C语言实现
  2. [Unity3d]多个摄像机叠加效果
  3. 动态加载和静态加载及其编译步骤
  4. Linux平台Makefile文件的编写基础篇和GCC参数详解
  5. QT 中textEdit 和 textBrowser 无法使用斜体及加粗等 解决办法
  6. 富士施乐3065扫描教程_全面支持IT国产化 富士施乐70款机型获统信UOS兼容认证
  7. 备份数据 宝塔linux_宝塔面板旧版本升级教程汇总—升级宝塔面板
  8. 二分法求方程的根_快速求解方程的根——二分法与牛顿迭代法
  9. P4592 [TJOI2018]异或 (可持久化Trie)
  10. webpack 4.0 配置文件 webpack.config.js文件的放置位置