Мой вопрос был сосредоточен на том, почему мы храним старый Объект. Может возникнуть вопрос: зачем нам неизменность.
Вот ответ на тот же
Безопасность: параметры обычно представлены в виде строки в сетевых подключениях, URL-адресах подключения к базе данных, именах пользователей / паролях и т. Д. Если бы они были изменяемыми, эти параметры можно было бы легко изменить.
Синхронизация и параллелизм: автоматическая неизменность String делает их потокобезопасными, тем самым решая проблемы синхронизации.
Кеширование: когда компилятор оптимизирует ваши объекты String, он видит, что если два объекта имеют одинаковое значение (a = "test" и b = "test"), и, таким образом, вам нужен только один строковый объект (для a и b, эти двое будут указывать на один и тот же объект).
Загрузка класса: строка используется в качестве аргументов для загрузки класса. В случае изменчивости это может привести к загрузке неправильного класса (поскольку изменяемые объекты меняют свое состояние).