Какие знаешь методы Object в Java

«Какие знаешь методы Object в Java» — вопрос из категории Java, который задают на 26% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

equals() – сравнение объектов по значению. По умолчанию сравнивает ссылки, нужно переопределять.
hashCode() – возвращает хеш-код объекта. Должен быть согласован с equals().
toString() – строковое представление объекта. По умолчанию выводит имя класса и хеш.
getClass() – возвращает класс объекта во время выполнения.
clone() – создает копию объекта (требует Cloneable).
finalize() – вызывается перед удалением сборщиком мусора (deprecated в Java 9).
wait(), notify(), notifyAll() – методы для работы с потоками и синхронизации.

Пример переопределения equals() и hashCode():

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    MyClass obj = (MyClass) o;
    return Objects.equals(field1, obj.field1) && field2 == obj.field2;
}

@Override
public int hashCode() {
    return Objects.hash(field1, field2);
}