Назад к вопросам
Junior — Middle
67
Когда строки создаются или попадают в строковый пул в Java?
Ответ от нейросети
sobes.tech AI
В Java строки создаются и попадают в строковый пул (String Pool) в следующих случаях:
- При создании строковых литералов, например:
String s = "hello";— строка автоматически помещается в пул. - При вызове метода
intern()на строковом объекте — если такой строки в пуле нет, она туда добавляется и возвращается ссылка из пула.
Строковый пул — это специальное место в памяти, где хранятся уникальные строковые литералы для экономии памяти и ускорения сравнения строк по ссылке.
Если строка создаётся через конструктор, например new String("hello"), то объект создаётся в куче и не попадает в пул, пока не вызвать intern().
Пример:
String s1 = "test"; // строка в пуле
String s2 = new String("test"); // новый объект в куче
String s3 = s2.intern(); // s3 ссылается на строку из пула
Таким образом, строки попадают в пул при создании литералов и при явном вызове intern().