Почему в джаве строки являются неизменяемым типом данных?
В данный момент я изучаю java (далее джава) и у меня возник следующий вопрос, почему в джаве строки являются immutable?
До джавы писал на Си и там строки это всего лишь массив символов, которые мы можем менять спокойно. В чём был смысл делать строки неизменяемыми?
Ответы (1 шт):
Спецификация не отвечает на этот вопрос, она просто описывает, как должно быть. Поэтому можно только выписывать плюсы и минусы, и по ним строить догадки, почему было принято именно такое решение.
Язык Java разрабатывался как безопасный язык, поэтому количество способов случайным образом навредить самому себе и системе в целом, положив приложение, сведено к минимуму.
- Вы не можете сломать оптимизатор и пул строк
- Вы не можете сломать систему сравнения объектов
- Вы не можете сломать синхронизацию в многопоточном приложение
- Вы не можете сломать систему загрузки классов
- Вы вообще не можете сломать многие вещи.
Просто сделав строки неизменяемыми, решается много потенциальных проблем. Если очень надо, есть массив символов. Но это если пользуетесь строками по назначению. На самом деле вы можете использовать более продвинутые способы разработки и сделать строки изменяемыми, попутно случайно сломав все вышеперечисленное. Но в таком случае совесть дизайнера языка, который пытался отговорить вас от этой идеи, будет совершенно чиста.