Оценивает знание работы со строками и оптимизаций JVM.
String иммутабелен, потому что:
Это безопасно для многопоточности.
Позволяет кешировать строки в String Pool (например, при String s = "text").
Хеш-код строки неизменен, что важно для HashMap.
Иммутабельность:
При "изменении" строки создаётся новый объект:
String s1 = "Hello";
String s2 = s1.concat(" World"); // Создаётся новая строка, s1 не меняетсяString Pool:
Пул строк — область в heap-памяти для кеширования строковых литералов.
При создании через "..." строка ищется в пуле:
String a = "text"; // Добавляется в пул
String b = "text"; // Берётся из пула (a == b вернёт true)
String c = new String("text"); // Новый объект вне пула (a == c — false)Метод intern() помещает строку в пул:
String d = new String("text").intern(); // a == d → trueПреимущества:
Безопасность: Передача строк между потоками без риска изменения.
Экономия памяти: Дубликаты не создаются.
Вывод: Иммутабельность String критична для безопасности и производительности.