Страницы

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

воскресенье, 8 декабря 2019 г.

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

#java #строки


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

Как неизменяемость (immutable) класса String помогает в реальных ситуациях программисту.
Были бы интересны примеры связанные с HashMap и многопоточностью.
    


Ответы

Ответ 1



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

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

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