Рубрики
Без рубрики

Почему строка неизменна в Java?

Почему строка неизменна в Java? Почему строка является неизменяемой или окончательной в java? Неизменяемые строки преимущества в java строковые объекты неизменяемы.

Автор оригинала: Pankaj Kumar.

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

Почему строка неизменна в Java?

Давайте рассмотрим некоторые преимущества неизменяемости строк, которые помогут понять, почему строка неизменна в Java.

  1. Пул строк возможен только потому, что строка неизменна в Java. Таким образом, среда выполнения Java экономит много места в куче , поскольку разные строковые переменные могут ссылаться на одну и ту же строковую переменную в пуле. Если бы строка не была неизменяемой, то интернирование строк было бы невозможно, потому что, если бы какая-либо переменная изменила значение, это отразилось бы и в других переменных. Если строка не является неизменяемой, это может привести к серьезной угрозе безопасности приложения. Например, имя пользователя базы данных, пароль передаются в виде строки для подключения к базе данных, а в
  2. программирование сокетов сведения о хосте и порту передаются в виде строки. Поскольку строка неизменна, ее значение нельзя изменить, иначе любой хакер может изменить указанное значение, чтобы вызвать проблемы с безопасностью в приложении. Поскольку строка неизменна, она безопасна для
  3. многопоточности . Один экземпляр строки может быть общим для разных потоков. Это позволяет избежать использования синхронизации для обеспечения потокобезопасности. Строки неявно потокобезопасны. Строки используются в
  4. загрузчике классов java , и неизменяемость обеспечивает безопасность того, что загрузчик классов загружает правильный класс. Например, подумайте об экземпляре, в котором вы пытаетесь загрузить java.sql.Connection класс, но указанное значение изменено на myhacked.Подключение класс, который может делать нежелательные вещи с вашей базой данных. Поскольку строка неизменна, ее
  5. хэш-код кэшируется во время создания, и ее не нужно вычислять повторно. Это делает его отличным кандидатом на ключ в карте, и его обработка выполняется быстрее, чем у других ключевых объектов HashMap. Вот почему строка наиболее широко используется в качестве ключей хэш-карты.

Выше приведены некоторые из причин, о которых я мог подумать, которые показывают преимущества неизменяемости строк. Это отличная функция класса Java String, которая делает его особенным.

Прочтите этот пост, чтобы узнать, как написать свой собственный неизменяемый класс .