Java Core junior

== vs equals для строк. Почему String immutable?

Ответ

== сравнивает ссылки (один объект в памяти?). equals — содержимое. String immutable: безопасность (ключи HashMap, передача в файлы/БД), потокобезопасность, кэширование hashCode, String Pool.

Разбор: Неизменяемость String обеспечивается приватным final-полем с массивом и отсутствием сеттеров, что даёт потокобезопасность, безопасное использование в качестве ключей HashMap, кэширование hashCode и работу String Pool. Ловушка — путать причину (immutability через инкапсуляцию состояния) с следствиями: final у класса лишь запрещает обойти неизменяемость через наследника, а методы String всегда возвращают новый объект, не трогая исходный.

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

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