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