Что такое mutable и immutable типы? Что даёт классу String то, что его сделали immutable? ​

Immutable (неизменным) типом в ООП называется такой тип, объект которого после создания становиться неизменным, так сказать read-only. Соответственно mutable(изменчивые) типы готовы к изменениям на всём протяжении своего существования. Immutable тип, например String, не содержит методов для изменения своего состояния. Все методы, которые якобы изменяют состояние объекта String, на самом деле возвращают новые строки. Плюсы неизменности строк следующие:
-так как строки неизменны, их стало возможно использовать в пуле, тем самым добиться экономии памяти

s1 и s2 указывают на одну и ту же строку.
-возможность кэширования хэш-кода. Мы всегда можем быть уверены что хэш-код строки не изменился.
-безопасность. Подключения к базам, соединения, аргументы методов. Строки везде.
-потокобезопасность. Методы, обращающиеся из разных потоков к общей строке всегда видят одно и то же её состояние.


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

Что такое mutable и immutable типы? Что даёт классу String то, что его сделали immutable? ​: 1 комментарий

  1. А как другие потоки могут быть уверены в том, что строка не изменится? Строка сама по себе, то есть просто набор символов, никому не нужна, к ней нужно обращаться, значит это строка должна храниться в переменной. Ну, переменная хранит ссылку на строку. Значит потоки будут просить доступ не к самой строке, а к переменной, ссылающейся на строку, но вы сами написали, что у переменной (объекта строки) есть методы, позволяющие её «изменить», то есть создать новый объект строки и ссылаться теперь на неё. Получается, что хоть и строки неизменны, но нам то нужны к переменным (объектам) типа строк, которые могут меняться

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *