Встречается на собеседованиях • сегодня

Каким образом в Java достигнута неизменяемость объектов String

В Java String неизменяем благодаря:

  1. final классу – нельзя наследоваться и переопределять поведение
  2. private final полям – нельзя изменить внутреннее состояние после создания
  3. Отсутствию сеттеров – нет методов для модификации данных
  4. Защитной копии в конструкторах – если передается массив char, создается копия

Пример:

java
String s1 = "hello";
String s2 = s1.concat(" world"); // создается новый объект
System.out.println(s1); // "hello" - оригинал не изменился

При "изменении" String всегда создается новый объект, а старый остается в памяти (если на него есть ссылки). Это обеспечивает безопасность в многопоточной среде и позволяет кэшировать хэш-код.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы