Back to questions
Junior — Middle
62
Можно ли быть уверенным, что строка всегда будет ссылаться на объект из String Pool при присваивании?
Answer from AI
sobes.tech AI
Нет, не всегда. В Java строковые литералы, объявленные в коде, автоматически помещаются в String Pool — специальное хранилище для уникальных строк. При присваивании строкового литерала переменной ссылка указывает на объект из пула.
Однако если строка создаётся динамически, например, с помощью оператора new String("...") или путём конкатенации, то она не обязательно будет ссылаться на объект из String Pool, а создаст новый объект в куче.
Чтобы явно поместить строку в пул, можно вызвать метод intern():
String s1 = new String("hello");
String s2 = s1.intern(); // s2 ссылается на строку из пула
Таким образом, только строковые литералы и строки, явно интернированные через intern(), гарантированно ссылаются на объекты из String Pool.