您的位置:首页 > 编程语言 > Java开发

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

2018-03-29 17:59 671 查看
==是运算符
    a:对于基本数据类型   ==比较的是基本数据类型的值
b:对于引用数据类型   ==比较的是引用类型的地址值

equals()和hashCode()都是Object类的一个方法;
equals()只能比较引用类型,默认比较地址值。

    equals()用于比较两个对象是否相等,其实内部比较的就是两个对象地址,和 ==  结果是一样的;
hashCode() 返回的是该对象的哈希码值,是一个离散的int型整数。在集合类操作中经常使用,提高查询速度;

对于ArrayList集合,判断元素是否存在,或者删除元素 ,底层依据都是equals方法。
对于HashSet集合,判断元素是否存在,或者删除元素,底层依据的是hashCode方法和equals方法。
HashSet集合保证元素唯一性:通过元素的hashCode方法,和equals方法完成的。
当元素的hashCode值相同时,才继续判断元素的equals是否为true。
如果为true,那么视为相同元素,不存。如果为false,那么存储。
如果hashCode值不同,那么不判断equals,从而提高对象比较的速度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: