> For the complete documentation index, see [llms.txt](https://kaze.gitbook.io/qa-theory/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kaze.gitbook.io/qa-theory/osnovy-programmirovaniya-na-java/klass-object.md).

# Класс Object

В Java класс `Object` является корневым классом для всех других классов. Он определен в пакете `java.lang` и автоматически является суперклассом для всех классов, если явно не указан другой суперкласс.&#x20;

1. **`equals(Object obj)`**:
   * Метод `equals()` используется для сравнения содержимого двух объектов на равенство.
   * Обычно переопределяется в подклассах для сравнения конкретных атрибутов объектов.
   * По умолчанию метод `equals()` в классе `Object` выполняет сравнение ссылок, проверяя, указывают ли две ссылки на один и тот же объект.
2. **`hashCode()`**:
   * Метод `hashCode()` возвращает целочисленное значение, называемое хеш-кодом объекта.
   * Этот метод используется в хеш-таблицах и других структурах данных для быстрого поиска объектов.
   * Реализация по умолчанию в классе `Object` возвращает хеш-код, основанный на внутреннем адресе объекта в памяти.
3. **`toString()`**:
   * Метод `toString()` возвращает строковое представление объекта.
   * Переопределение этого метода позволяет удобно получать информацию о содержимом объекта в виде строки.
   * По умолчанию метод `toString()` возвращает строку, содержащую имя класса и хеш-код объекта.
4. **`getClass()`**:
   * Метод `getClass()` возвращает объект типа `Class`, представляющий класс объекта.
   * Этот метод позволяет получить информацию о классе объекта во время выполнения программы.
5. **`clone()`**:
   * Метод `clone()` создает и возвращает копию объекта.
   * Для корректной работы метода `clone()` класс объекта должен реализовать интерфейс `Cloneable` и переопределить метод `clone()`.
6. **`finalize()`**:
   * Метод `finalize()` вызывается сборщиком мусора перед удалением объекта из памяти.
   * Переопределение этого метода позволяет выполнять очистку ресурсов или другие действия перед уничтожением объекта.
7. **`notify()`, `notifyAll()`, `wait()`**:
   * Эти методы используются для реализации механизмов синхронизации и многопоточности в Java.
   * Они используются в связке с мониторами объектов для управления доступом к общим ресурсам в многопоточных приложениях.
8. **`wait(long timeout)`**:
   * Метод `wait(long timeout)` позволяет потоку ждать определенное количество времени до того, как он будет пробужден или прерван.

Класс `Object` предоставляет базовые функции и методы, которые доступны для всех объектов в Java, и является основой для создания пользовательских классов.
