Sobes.tech
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 помогает управлять строками, обеспечивая уникальность и оптимизацию памяти.