The Java String клас стажант() метод връща вградения низ. Връща каноничното представяне на низ.
обработка на изключения java
Може да се използва за връщане на низ от паметта, ако е създаден от нова ключова дума. Той създава точно копие на низовия обект на купчина в String Constant Pool.
Подпис
Сигнатурата на метода intern() е дадена по-долу:
public String intern()
Се завръща
интерниран низ
Необходимостта и работата на метода String.intern().
Когато се създаде низ в Java, той заема памет в купчината. Освен това знаем, че класът String е неизменен. Следователно, когато създаваме низ, използвайки ключовата дума new, в купчината се разпределя нова памет за съответния низ, което е независимо от съдържанието на масива. Разгледайте следния кодов фрагмент.
String str = new String('Welcome to JavaTpoint.'); String str1 = new String('Welcome to JavaTpoint'); System.out.println(str1 == str); // prints false
Операторът println отпечатва false, защото отделна памет е разпределена за всеки низов литерал. Така в паметта се създават два нови низови обекта, т.е. str и str1. който съдържа различни препратки.
конструктори в java
Знаем, че създаването на обект е скъпа операция в Java. Ето защо, за да спестят време, разработчиците на Java излязоха с концепцията за String Constant Pool (SCP). SCP е област в паметта на стека. Той съдържа уникалните низове. За да поставите низовете в пула от низове, трябва да извикате стажант() метод. Преди да създаде обект в пула от низове, JVM проверява дали низът вече присъства в пула или не. Ако низът присъства, се връща неговата препратка.
String str = new String('Welcome to JavaTpoint').intern(); // statement - 1 String str1 = new String('Welcome to JavaTpoint').intern(); // statement - 2 System.out.println(str1 == str); // prints true
В горния кодов фрагмент методът intern() се извиква върху обектите String. Следователно паметта се разпределя в SCP. За втория израз не се създава нов низов обект, тъй като съдържанието на str и str1 е едно и също. Следователно препратката към обекта, създаден в първия израз, се връща за str1. Така str и str1 сочат към една и съща памет. Следователно операторът за печат се отпечатва вярно.
Пример за метод Java String intern().
Име на файл: InternExample.java
чете json файлове
public class InternExample{ public static void main(String args[]){ String s1=new String('hello'); String s2='hello'; String s3=s1.intern();//returns string from pool, now it will be same as s2 System.out.println(s1==s2);//false because reference variables are pointing to different instance System.out.println(s2==s3);//true because reference variables are pointing to same instance }}Тествайте сега
Изход:
false true
Java String intern() Метод Пример 2
Нека видим още един пример, за да разберем концепцията за стажант на низ.
Име на файл: InternExample2.java
public class InternExample2 { public static void main(String[] args) { String s1 = 'Javatpoint'; String s2 = s1.intern(); String s3 = new String('Javatpoint'); String s4 = s3.intern(); System.out.println(s1==s2); // True System.out.println(s1==s3); // False System.out.println(s1==s4); // True System.out.println(s2==s3); // False System.out.println(s2==s4); // True System.out.println(s3==s4); // False } }Тествайте сега
Изход:
true false true false true false
Точки за запомняне
Следват някои важни точки, които трябва да запомните относно метода intern():
java константи
1) Низовият литерал винаги извиква метода intern(), независимо дали се споменава методът intern() заедно с низовия литерал или не. Например,
String s = 'd'.intern(); String p = 'd'; // compiler treats it as String p = 'd'.intern(); System.out.println(s == p); // prints true
2) Всеки път, когато създаваме String обект, използвайки нов ключова дума, се създават два обекта. Например,
String str = new ('Hello World');
Тук се създава един обект в хийп паметта извън SCP поради използването на ключовата дума new. Тъй като имаме и низовия литерал ('Hello World'); следователно, един обект се създава вътре в SCP, при условие че буквалното „Hello World“ вече не присъства в SCP.