Страницы

Поиск по вопросам

вторник, 16 октября 2018 г.

Почему String неизменяемый? и как это помогает программисту?

Что помимо того что нельзя наследоваться от final класса, а именно String.class, и того что при использовании метода concat() и операции + будет создан новый объект типа String а не изменен существующий, используется при определении неизменяемости класса String?
Как неизменяемость (immutable) класса String помогает в реальных ситуациях программисту. Были бы интересны примеры связанные с HashMap и многопоточностью.


Ответ

Вот тут человек уже ответил на ваш вопрос:
Безопасность и String pool основные причины неизменяемости String в Java. Безопасность объекта неизменяемого класса String обусловлена такими фактами: вы можете передавать строку между потоками и не беспокоиться что она будет изменена нет проблем с синхронизацией (не нужно синхронизировать операции со String) отсутствие утечек памяти в Java строки используются для передачи параметров для авторизации, открытия файлов и т.д. - неизменяемость позволяет избежать проблем с доступом возможность кэшировать hash code String pool позволяет экономить память и не создавать новые объекты для каждой повторяющийся строки. В случае с изменяемыми строками - изменение одной приводило бы к изменению всех строк одинакового содержания.
А если нужно изменять, есть StringBuffer.

Комментариев нет:

Отправить комментарий