同一性の比較が行われ、falseとなる
あっています
オーバーライド~指定条件を変える
あっています
具体的に何かメソッドが呼び出されて処理された結果なのか、a.equals(b)だけで処理されるのか
質問の意図をはかりかねるため、String#equalsの実装を提示します。
最終的にはStringLatin1#equals
でbyteを順に比較しています。
String#equals
static final boolean COMPACT_STRINGS;
static {
COMPACT_STRINGS = true;
}
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);
}
StringLatin1#equals
public static boolean equals(byte[] value, byte[] other) {
if (value.length == other.length) {
for (int i = 0; i < value.length; i++) {
if (value[i] != other[i]) {
return false;
}
}
return true;
}
return false;
}