Что такое String Pool

«Что такое String Pool» — вопрос из категории Java, который задают на 26% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Особенности:

  • Экономит память, избегая дублирования.
  • Работает благодаря иммутабельности строк.
  • String.intern() явно добавляет строку в пул (или возвращает существующую).

Пример:

String s1 = "hello"; // Создаётся в String Pool
String s2 = "hello"; // Использует существующую из пула
String s3 = new String("hello"); // Создаёт новый объект в heap

System.out.println(s1 == s2); // true (один объект)
System.out.println(s1 == s3); // false (разные объекты)
System.out.println(s1 == s3.intern()); // true (s3 добавлен в пул)