Назад к вопросам
Junior
69
questionbank
Что ты знаешь о классе Object?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
java.lang.Object является корневым классом в иерархии классов Java. Каждый класс неявно наследуется от Object.
Основные методы:
equals(Object obj): Сравнивает текущий объект с другим объектом на равенство. По умолчанию сравнивает ссылки.hashCode(): Возвращает хеш-код объекта. Используется в коллекциях, основанных на хеш-таблицах (например,HashMap,HashSet). Если два объекта равны поequals(), ихhashCode()должны быть одинаковы.toString(): Возвращает строковое представление объекта. По умолчанию возвращает имя класса +@+ хеш-код в шестнадцатеричном формате. Чаще всего переопределяется для предоставления более информативного представления.getClass(): Возвращает объектClass, представляющий класс объекта во время выполнения.notify(): Возобновляет выполнение одного потока, ожидающего на мониторе этого объекта.notifyAll(): Возобновляет выполнение всех потоков, ожидающих на мониторе этого объекта.wait()/wait(long timeout)/wait(long timeout, int nanos): Заставляет текущий поток ожидать до тех пор, пока другой поток не вызовет методыnotify()илиnotifyAll()для этого объекта или не истечет указанное время. Вызывается только из синхронизированных блоков или методов.clone(): Создает и возвращает копию этого объекта. Требует реализации интерфейсаCloneable.finalize(): Вызывается сборщиком мусора перед удалением объекта. Не рекомендуется к использованию из-за непредсказуемости выполнения.
Пример переопределения equals() и hashCode():
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
Класс Object обеспечивает фундаментальные механизмы, необходимые для работы объектов в Java, такие как сравнение, хеширование, синхронизация потоков и получение информации о классе.