#java #строки
Что помимо того что нельзя наследоваться от final класса, а именно String.class, и того что при использовании метода concat() и операции + будет создан новый объект типа String а не изменен существующий, используется при определении неизменяемости класса String? Как неизменяемость (immutable) класса String помогает в реальных ситуациях программисту. Были бы интересны примеры связанные с HashMap и многопоточностью.
Ответы
Ответ 1
Вот тут человек уже ответил на ваш вопрос: Безопасность и String pool основные причины неизменяемости String в Java. Безопасность объекта неизменяемого класса String обусловлена такими фактами: вы можете передавать строку между потоками и не беспокоиться что она будет изменена нет проблем с синхронизацией (не нужно синхронизировать операции со String) отсутствие утечек памяти в Java строки используются для передачи параметров для авторизации, открытия файлов и т.д. - неизменяемость позволяет избежать проблем с доступом возможность кэшировать hash code String pool позволяет экономить память и не создавать новые объекты для каждой повторяющийся строки. В случае с изменяемыми строками - изменение одной приводило бы к изменению всех строк одинакового содержания. А если нужно изменять, есть StringBuffer.
Комментариев нет:
Отправить комментарий