Как изначально создается пул строк в Java?

В Java пул строк (String Pool) создаётся автоматически при загрузке класса и содержит все строковые литералы, встречающиеся в коде.

Короткий ответ

Что ответить на собеседовании

В Java пул строк (String Pool) создаётся автоматически при загрузке класса и содержит все строковые литералы, встречающиеся в коде. Когда в программе используется строковый литерал, например "hello", JVM проверяет, есть ли такая строка в пуле. Если есть — возвращает ссылку на неё, если нет — добавляет новую строку в пул.

Подробный разбор

Ответ с пояснениями

В Java пул строк (String Pool) создаётся автоматически при загрузке класса и содержит все строковые литералы, встречающиеся в коде. Когда в программе используется строковый литерал, например "hello", JVM проверяет, есть ли такая строка в пуле. Если есть — возвращает ссылку на неё, если нет — добавляет новую строку в пул.

Это позволяет экономить память, так как одинаковые строковые литералы хранятся в одном экземпляре. Пул строк создаётся в специальной области памяти (в современных JVM — в куче, в старых версиях — в PermGen).

Пример:

String s1 = "test";
String s2 = "test";
System.out.println(s1 == s2); // true, обе переменные ссылаются на один объект из пула

Таким образом, изначально пул строк формируется из всех строковых литералов, встречающихся в загруженных классах.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее