“==”和“equals”区别,hashcode是?

转载相关链接

1:==分析

1.2:基本类型比较
判断基本类型的数值是不是相等

1.3:对象类型比较
判断两个引用是不是指向同一个对象,即内存地址是不是相等。

2:equals分析

来判断对象内容是不是相等,一般有以下两种情况来分析。

1:没有覆盖equals时,与==相等,判断是不是同一个对象。

2:在覆盖情况下,有自己定义的规则来判断两个对象是不是相等。

3:代码示例

复制代码
Class Main{
public void main(String[] args){
String a = new String(“aa”);
String b = new String(“aa”);

  String aa = "aa";  
  String bb = "aa";

  

}  

}
复制代码

4:HashCode方法

4.1:介绍
HashCode方法返回对象的哈希值,是一个int型的变量,该方法定义在Object类中。该哈希码的作用是给每一个对象一个哈希值为了能够在哈希表中快速找到位置。

4.2:HashCode与equals的关系和区别
我们以HashSet为例子,来讲解HashCode的用处。在HashSet中,判断key值的重复问题,如果两个对象HashCode相等,则调用equals方法来判断是否真的相等,若也相等也认为是重复的key,不能添加。这样说就能大大减少equals方法的使用来减少判断,提高运行速度。

如果两个对象相等,则hashcode一定也是相同的
两个对象相等,对两个对象分别调用equals方法都返回true
两个对象有相同的hashcode值,它们也不一定是相等的
因此,equals 方法被覆盖过,则 hashCode 方法也必须被覆盖,否则即便euqals相等,在HashSet中,由于hadhCode方法没有重新所有Object对象都不可能相等,造成问题,即便拥有相等内容equals相等。
hashCode() 的默认行为是对堆上的对象产生独特值。如果没有重写 hashCode(),则该 class 的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值