logo

Java String intern()

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.