Java Core junior

Разница между == и equals() для строк?

Ответ

== сравнивает ссылки. equals() сравнивает содержимое. Для строк, созданных литералом, == может вернуть true из-за String Pool, но полагаться на это нельзя.

Разбор: == всегда сравнивает ссылки (для строк — равенство объектов в памяти), а equals() у String переопределён для посимвольного сравнения содержимого. Дистракторы меняют роли операторов местами, выдумывают перегрузку == для String и ложно утверждают, что new String("abc") попадает в пул — на самом деле new создаёт новый объект вне пула, и == вернёт false.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться