Метод equals()
используется для проверки, является ли состояние экземпляров двух классов Java одинаковым. Поскольку equals()
принадлежит классу Object, каждый класс Java наследует его. Но метод equals()
должен быть переопределен, чтобы он работал правильно. Конечно, String переопределяет equals()
.
Взгляните:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String aString = (String)anObject;
if (coder() == aString.coder()) {
return isLatin1() ? StringLatin1.equals(value, aString.value)
: StringUTF16.equals(value, aString.value);
}
}
return false;
}
Как видите, состояние значения класса String должно быть равно (), а не ссылка на объект. Неважно, если ссылка на объект отличается; состояние строки будет сравниваться
Я взял это у здесь . Лучше, если у вас есть представление о String pool. Поэтому, пожалуйста, обратитесь по ссылке