Junior — Middle
111
Pouvez-vous expliquer le rôle et la finalité de la classe interne intern à l'intérieur de la classe String en Java?
Réponse de l'IA
sobes.tech IA
В 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 помогает управлять строками, обеспечивая уникальность и оптимизацию памяти.