1、在HashSet等散列集合中,判断对象相等的步骤: 1.hashcode不相等时,直接false 2.hashcode相等,再equals() [hashcode的主要目的是提高效率]
2、在ArrayList等非散列集合中,只根据equals()判断相等
3、equals相等,则hashcode一定相等(java要求的),两个对象相等
4、hashcode相等,equals不一定相等,两对象不一定相等;hashcode不相等时,equals不相等,两对象不相等
5、重写hashcode()和equals():[自定义的对象]想放入散列集合(HashMap/LinkedHashMap/HashSet/LinkedHashSet等)时,需要重写这两个方法(因为默认Object的hashcode是对象在内存中地址的哈希码,某些情况下我们需要根据对象的某些属性来判断对象的相等)
6、Object的equals()效果和==相同,都是判断地址是不是相等。
7、两个对象,如果 a.equals(b)==true; 则ab相等,但是地址不一定相等
8、两个对象,如果hashcode相等,对象不一定相等,需要判断equals()
9、equals(): 1.对称性(a.b=b.a) 2.反射性(a.a) 3.类推性(a.b,b.c,a.c) 4.一致性(重复n次结果一致) 5.非空性(equals不同类型对象或者null,总是false)