Незмінний рядок (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

На рівні пам'яті незмінність дозволяє реалізувати 'Пулювання рядків' (String Pooling). Комп'ютер перевіряє, чи є вже такий текст у пам'яті, і якщо є — просто дає посилання на нього замість створення дубліката. Також це критично для безпеки: якби рядки були змінними, хакер міг би підмінити шлях до важливого файлу вже після того, як програма перевірила його на безпеку, але до того, як вона його відкрила (уязвимість TOCTOU).

📚 Джерела