看完了hashcode方法再看看equals方法
Object类的equals方法,先上源代码,如图: 直接判断,两个是不是同一个对象,而不仅仅是比较内容,地址也必须相同,这也是==作用所在之处,但是基本类型是可以直接使用==判断内容的,因为基本类型并没有生成类,而equals方法的使用,必须依赖于类,所以Object类equals使用的时候,真的就是判断两个类是不是同一个类了。
String 类的equals方法,源代码,屏幕太小,直接贴源代码了:
public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; }String 的equals 方法先双等号(==)判断比较的对象是不是同一个对象,即存放的地址是不是相同,如果不是同一个对象,那么降低一下要求,存放的内容是不是相同呢,相同,ok,那么返回TRUE,内容不同,真的没法补救了。 从图中,也可以看出,对于String类==对于非基本数据类型来说,一定是判断存放的位置是不是相同,而equals只要求内容一样就可。 而且,hashcode和equals还有如下默认关系: 对String来说 : 1. hashcode不同,equals 肯定不相同 2. hashcode 相同,equals也可能不同 3. equals 相同,hashcode一定相同 4. equals 不同,hashcode也可能相同
先到这吧!