equals()反映的是对象或变量具体的值,即两个对象里面包含的值--可能是
对象的引用,也可能是值类型的值。
而hashCode()是对象或变量通过哈希算法计算出的哈希值。
之所以有hashCode方法,是因为在批量的对象比较中,hashCode要比equals来得快,
很多集合都用到了hashCode,比如HashTable。
两个obj,如果equals()相等,hashCode()一定相等。
两个obj,如果hashCode()相等,equals()不一定相等
(Hash散列值有冲突的情况,虽然概率很低)。
比较对象为基本数据类型(byte,short,char,int,long,float,double,boolean)
比较两个基本数据类型是否相等用==,因为只有类才会有equals方法。
hashCode()的作用:
通过hashCode比较比equal方法快,当get时先比较hashCode,如果hashCode不同,
直接返回false。
我思所得:equal()指向同一内存,地址则相等,否则不相等
hashcode是将变量通过Hash算法计算出的哈希值,所以可能相等。
==用于比较基本数据类型
对象的引用,也可能是值类型的值。
而hashCode()是对象或变量通过哈希算法计算出的哈希值。
之所以有hashCode方法,是因为在批量的对象比较中,hashCode要比equals来得快,
很多集合都用到了hashCode,比如HashTable。
两个obj,如果equals()相等,hashCode()一定相等。
两个obj,如果hashCode()相等,equals()不一定相等
(Hash散列值有冲突的情况,虽然概率很低)。
比较对象为基本数据类型(byte,short,char,int,long,float,double,boolean)
比较两个基本数据类型是否相等用==,因为只有类才会有equals方法。
hashCode()的作用:
通过hashCode比较比equal方法快,当get时先比较hashCode,如果hashCode不同,
直接返回false。
我思所得:equal()指向同一内存,地址则相等,否则不相等
hashcode是将变量通过Hash算法计算出的哈希值,所以可能相等。
==用于比较基本数据类型