equals == hashcode

1:equals方法                                                                                    
      Object类定义的equals方法用于判别某个指定的对象与当前对象 (调用 equals方法的对象)是否等价。在Java 语言中数据等价的基本含义是指两个数据的值相等。 在 equals 和”==”进行比较的时候,引用类型数据比较的是引用,即内存地址,基本数据类型比较的是值。

1.1:equals方法与“==”运算符的关系
       equals()方法只能比较引用类型,"=="可以比较引用类型及基本类型;
特例:当用equals()方法进行比较时,对类 File、String、Date及包装类来说,是比较类型及内容而不考虑引用的是否是同一个实例; 用"=="进行比较时,符号两边的数据类型必须一致(可自动转换的数据类型除外),否则编译出错,而用equals方法比较的两个数据只要都是引用类型即可。 

小结一下:
      在引用类型的比较上,Object里面的 equals方法默认的比较方式,基本上等同于“==” ,都是比较内存地址,只有那几个特殊的是比较的值。

2:hashCode 方法                                                                                    
      hashCode是按照一定的算法得到的一个数值,是对象的散列码值。主要用来在集合(后面会学到)中实现快速查找等操作,也可以用于对象的比较。
     在Java 中,对hashCode的规定如下:
(1):在同一个应用程序执行期间,对同一个对象调用 hashCode(),必须返回相同的整数结果——前提是equals()所比较的信息都不曾被改动过。 至于同一个应用程序在不同执
行期所得的调用结果,无需一致。 
(2):如果两个对象被equals(Object)方法视为相等,那么对这两个对象调用hashCode()必须获得相同的整数结果。 
(3):如果两个对象被equals(Object) 方法视为不相等,那么对这两个对象调用 hashCode()不必产生不同的整数结果。然而程序员应该意识到,对不同对象产生不同的整数结
果,有可能提升hashTable(后面会学到,集合框架中的一个类) 的效率。 
 
小结一下:
     如果两个对象相同,那么它们的 hashCode 值一定要相同;如果两个对象的hashCode相同,它们并不一定相同。 在Java 规范里面规定,覆盖equals方法应该连带覆盖 hashCode方法,这就涉及到一个如何实现hashCode方法的问题了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值