Чем equals отличается от ==?

В Java == сравнивает значения примитивов либо идентичность объектных ссылок. equals проверяет логическое равенство, если класс определил его соответствующим образом.

Короткий ответ

Что ответить на собеседовании

В Java == сравнивает значения примитивов либо идентичность объектных ссылок. equals проверяет логическое равенство, если класс определил его соответствующим образом.

Подробный разбор

Ответ с пояснениями

В Java == сравнивает значения примитивов либо идентичность объектных ссылок. equals проверяет логическое равенство, если класс определил его соответствующим образом.

У Object реализация equals по умолчанию тоже основана на идентичности. String сравнивает текст, поэтому две разные строки-объекта могут быть equals, но не ==. При собственном equals нужен согласованный hashCode. Для потенциального null удобен Objects.equals(a, b). Массивы требуют специальных методов для сравнения содержимого, если именно это нужно.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее