java基础复习(二) ==和equals和hashCode的区别

==是运算符

    a:对于基本数据类型   ==比较的是基本数据类型的值
b:对于引用数据类型   ==比较的是引用类型的地址值

equals()和hashCode()都是Object类的一个方法;

equals()只能比较引用类型,默认比较地址值。

    equals()用于比较两个对象是否相等,其实内部比较的就是两个对象地址,和 ==  结果是一样的;

hashCode() 返回的是该对象的哈希码值,是一个离散的int型整数。在集合类操作中经常使用,提高查询速度;

对于ArrayList集合,判断元素是否存在,或者删除元素 ,底层依据都是equals方法。

对于HashSet集合,判断元素是否存在,或者删除元素,底层依据的是hashCode方法和equals方法。

HashSet集合保证元素唯一性:通过元素的hashCode方法,和equals方法完成的。

当元素的hashCode值相同时,才继续判断元素的equals是否为true。

如果为true,那么视为相同元素,不存。如果为false,那么存储。

如果hashCode值不同,那么不判断equals,从而提高对象比较的速度。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值