equals与==和Hashcode,一直有点模糊不清

未修改equals比较的内容,两个对象经过equals比较相等,其HashCode必定相等,
可是HashCode相等,不必定推出equals必定为true(Hash冲突)
HashCode不等,必定能推出equals为false;
也就是说equals比较的对象不等,其hashcode码也有可能不一样,也有可能相同
==比较是两个对象是不是存储在同一个内存地址中,而equals比较的是两个对象的引用是否相同
基本类型变量不能用equals比较(a equals(b),jdk1.5以上b能够为基本数据类型,a不能够)
为不一样对象生成不一样的hashcode能够提升hash表的性能,java中大部分的类都写了hashCode()方法,通常要用到相关方法时会重写hashcode()方法
相关文章
相关标签/搜索