Java Core junior
== vs equals для строк. Почему String immutable?
Ответ
== сравнивает ссылки (один объект в памяти?). equals — содержимое. String immutable: безопасность (ключи HashMap, передача в файлы/БД), потокобезопасность, кэширование hashCode, String Pool.
Разбор: Неизменяемость String обеспечивается приватным final-полем с массивом и отсутствием сеттеров, что даёт потокобезопасность, безопасное использование в качестве ключей HashMap, кэширование hashCode и работу String Pool. Ловушка — путать причину (immutability через инкапсуляцию состояния) с следствиями: final у класса лишь запрещает обойти неизменяемость через наследника, а методы String всегда возвращают новый объект, не трогая исходный.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.