Я только слышал, что строки в Java не могут быть неизменными, и мне было интересно, есть ли другие объекты, кроме строк, которые также являются неизменяемыми?
Кстати, строки в C ++ тоже неизменны?
Многие из примитивных типов являются неизменяемыми (Integer, Long, Boolean и т. Д.). Неизменность — это не то, что явно указано в Java, это действительно семантический контракт. Вы можете сделать любой класс неизменяемым, объявив его члены финальными, назначив их при конструировании и заблокировав доступ через открытый интерфейс класса.
Строка в C ++ — это массив символов, заканчивающийся нулевым символом. Вот и все. Это не обещает неизменности, хотя использование const может помочь заблокировать доступ.
Я предполагаю, что смысл в том, что многие вещи в Java неизменны, но только документация и источник могут доказать это вам.
Все примитивы в штучной упаковке, например, Integer, являются неизменяемыми.
Вы можете создавать неизменяемые классы самостоятельно — например, класс, который устанавливает свои переменные, используя свой конструктор, и не имеет открытых переменных или сеттеров.