Back to questions
Junior — Middle
60
Можете объяснить роль и предназначение внутреннего класса intern внутри класса String в Java?
Answer from AI
sobes.tech AI
В Java класс String имеет метод intern(), который связан с пулом строк (string pool). Внутренний класс intern обычно не является частью стандартного API, но концептуально intern отвечает за хранение уникальных экземпляров строк в пуле.
Когда вызывается метод intern() у строки, JVM проверяет, есть ли в пуле строка с таким же содержимым:
- Если есть — возвращает ссылку на эту строку из пула.
- Если нет — добавляет текущую строку в пул и возвращает ссылку на неё.
Это позволяет экономить память и ускорять сравнение строк (сравнение ссылок вместо содержимого).
Пример:
String s1 = new String("hello");
String s2 = s1.intern();
String s3 = "hello";
System.out.println(s2 == s3); // true, потому что s2 и s3 ссылаются на одну строку из пула
Таким образом, intern помогает управлять строками, обеспечивая уникальность и оптимизацию памяти.