Ответ
Метод equals() в Java сравнивает объекты по их содержимому, а не по ссылке (в отличие от ==). По умолчанию (в классе Object) он ведёт себя как ==, но его можно переопределить для логического сравнения полей.
Пример переопределения:
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return age == person.age && Objects.equals(name, person.name);
}
Важные правила:
- Рефлексивность:
x.equals(x)→true - Симметричность:
x.equals(y)==y.equals(x) - Транзитивность: если
x.equals(y)иy.equals(z), тоx.equals(z) - Консистентность: повторные вызовы дают одинаковый результат
x.equals(null)→false