English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Метод Java String intern() возвращает нормальное представление строки объекта.
Синтаксис метода строки intern():
string.intern()
Здесь string является объектом класса String.
Без параметров
Вернуть нормальное представление строки
Встраивание строк гарантирует, что все строки с одинаковым контентом используют одну и ту же память.
Предположим, что у нас есть две строки:
String str1 = "xyz"; String str2 = "xyz";
Поскольку str1 и str2 имеют одинаковый контент, эти строки будут делиться одной и той же памятью. Java автоматически вставляет строковые литералы.
Однако, если создавать строки с помощью ключевого слова new, эти строки не будут делиться одной и той же памятью. Например,
class Main { public static void main(String[] args) { String str1 = new String("xyz"); String str2 = new String("xyz"); System.out.println(str1 == str2); // false {} {}
Из этого примера видно, что у str1 и str2 одинаковый контент. Однако, они не равны, потому что они не делят одну и ту же память.
В этом случае вы можете вручную использовать метод intern(), чтобы использовать одинаковые строки в одном и том же разделе памяти.
class Main { public static void main(String[] args) { String str1 = new String("xyz"); String str2 = new String("xyz"); //str1 и str2 не делят один и тот же пул памяти System.out.println(str1 == str2); // false //Использование метода intern() //Теперь, str1 и str2 делят один и тот же пул памяти str1 = str1.intern(); str2 = str2.intern(); System.out.println(str1 == str2); // true {} {}
Как вы видите, str1 и str2 имеют одинаковое содержимое, но они не были равны с начала.
Затем мы используем метод intern(), чтобы str1 и str2 использовали один и тот же пул памяти. После использования intern() str1 и str2 равны.