在idea中 我没有重写object中的equals方法 object中的equals方法不是比较内存地址吗 我创建两个对象 那o1和o2的内存地址肯定不一样啊 为啥还是返回true
o1和o2都用"ddd"重新赋值了,这个是字符串字面量,编译后都是指向字符串常量池里的"ddd"。这里是用String.equals()进行比较的,o1和o2都指向常量池中的同一个对象,所以内存地址相同,直接返回true了
public final class String {
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
return (anObject instanceof String aString)
&& (!COMPACT_STRINGS || this.coder == aString.coder)
&& StringLatin1.equals(value, aString.value);
}
}