Object类中的equals方法默认是
public boolean equals(Object obj) {
return (this == obj);
}
可见默认的equals方法,直接调用==,比较对象地址。
在String类的equals方法为先比较地址是否相同,如果相同则返回true,不相同的话比价字符串的char字符是否相同,然后返回结果
如果我们的对象没有重新equals方法,那么使用的就是Object类中默认的equals方法,还是使用==进行比较的,即比较的是引用的地址是否相同
默认情况下,Object中的hashCode() 返回对象的32位jvm内存地址
String类源码中重写的hashCode方法如下,
public int hashCode() { int h = hash; //Default to 0 ### String类中的私有变量, if (h == 0 && value.length > 0) { //private final char value[]; ### Sting类中保存的字符串内容的的数组,value中存储的字符串 char val[] = value; for (int i = 0; i < value.length; i++) { h = 31 * h + val[i]; } hash = h; } return h; }