Неизменяемая строка (Immutable String)

Неизменяемая строка — это строковый объект, состояние которого нельзя изменить после инициализации.

Languages: Java, Python, C#, JavaScript, Go. Counter-examples: C strings (char arrays), StringBuilder (Java).

        graph LR
  Center["Неизменяемая строка (Immutable String)"]:::main
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 Простыми словами

Представь, что ты написал свое имя на камне. Ты не можешь его стереть пальцем. Чтобы написать другое имя, тебе придется взять другой камень. Это удобно, потому что все всегда уверены, что на камне написано именно то, что там было изначально.

🤓 Expert Deep Dive

С точки зрения архитектуры, неизменяемость строк облегчает работу 'Сборщика мусора' (Garbage Collector). Поскольку объекты не меняются, графы зависимостей становятся проще. В языке C# также существует 'String.IsInterned', который позволяет вручную управлять пулом строк для экстремальной экономии памяти. Также это свойство делает строки идеальными для передачи паролей и токенов доступа: вы точно знаете, что значение не будет искажено в процессе передачи между слоями приложения.

📚 Источники