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

Гарантировано ли присваивание строке значения из String Pool

При использовании литералов строк Java гарантированно помещает их в String Pool и возвращает ссылку на существующий объект при повторном использовании того же литерала. Однако при создании строк через new String() или динамически (например, конкатенацией) объект создается в куче, даже если такое же значение уже есть в пуле.

Пример:

java
String s1 = "hello";  // гарантированно из пула
String s2 = "hello";  // та же ссылка, что и s1
String s3 = new String("hello");  // новый объект в куче
String s4 = s3.intern();  // принудительно помещаем в пул и получаем ссылку

System.out.println(s1 == s2); // true
System.out.println(s1 == s3); // false
System.out.println(s1 == s4); // true

Для гарантированного получения строки из пула используйте метод intern(), но это может негативно сказаться на производительности.

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

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

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

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