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