Equals与==相同,对于基本数据类型,==比较值;equals无效;对于引用类型,都是比较地址,比如string类对equals进行了重写,比较值
公约:覆盖equals要覆盖hashcode
否则导致该类无法结合所有基于散列的集合正常工作;
比如我们对象存在hashmap里,通过key算出hashcode找到链表,然后用equals比较值是否相等;if没重写hashcode,第一步就出错,因为hashcode是根据对象地址得到的。If没重写equals,找到了链表却没法比较相同的值,因为equals是地址
覆盖equals要覆盖hashcode
最新推荐文章于 2024-07-13 15:29:04 发布