java中 == ,equals , hashCode区别
基本数据类型==是比较值,复合数据类型==是比较存放的地址,equals默认也是比较存放地址,如果重写了equals 方法,那就按照重写的。例如String Integer Date比较的是值不同。
hashCode 是提高散列结构存储中查找的效率
equals和hashCode需要同时覆盖
两个对象equals返回true,则hashCode 有必要返回相同int数
两个对象equals返回false,则hashCode不一定返回不同的int数,但为不相等的对象生成不同hashCode值可以提高哈希表的性能。
若两个对象hashCode返回相同int数,则equals不一定返回true。
若两个对象hashCode返回不同int数,则equals一定返回false。
同一对象在执行期间若已经存储在集合中,则不能修改影响hashCode值的相关信息,否则会导致内存泄露问题。