The Java stīgu klase intern() metode atgriež internēto virkni. Tas atgriež virknes kanonisko attēlojumu.
To var izmantot, lai atgrieztu virkni no atmiņas, ja tā ir izveidota ar jaunu atslēgvārdu. Tas izveido precīzu kaudzes virknes objekta kopiju String Constant Pool.
Paraksts
Intern() metodes paraksts ir norādīts zemāk:
public String intern()
Atgriežas
internēta virkne
String.intern() metodes nepieciešamība un darbība
Kad virkne ir izveidota Java, tā aizņem atmiņu kaudzē. Mēs arī zinām, ka stīgu klase ir nemainīga. Tāpēc ikreiz, kad mēs izveidojam virkni, izmantojot jauno atslēgvārdu, atbilstošas virknes kaudzē tiek piešķirta jauna atmiņa neatkarīgi no masīva satura. Apsveriet šādu koda fragmentu.
String str = new String('Welcome to JavaTpoint.'); String str1 = new String('Welcome to JavaTpoint'); System.out.println(str1 == str); // prints false
Println priekšraksts tiek drukāts nepatiesi, jo katram virknes literālam tiek piešķirta atsevišķa atmiņa. Tādējādi atmiņā tiek izveidoti divi jauni virkņu objekti, t.i., str un str1. kurā ir dažādas atsauces.
alfabēta cipari
Mēs zinām, ka objekta izveide Java ir dārga darbība. Tāpēc, lai ietaupītu laiku, Java izstrādātāji nāca klajā ar String Constant Pool (SCP) koncepciju. SCP ir apgabals kaudzes atmiņā. Tas satur unikālas stīgas. Lai ievietotu stīgas stīgu baseinā, ir jāizsauc intern() metodi. Pirms objekta izveides virkņu pūlā JVM pārbauda, vai virkne jau atrodas pūlā. Ja virkne ir, tiek atgriezta tās atsauce.
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
Iepriekš minētajā koda fragmentā String objektos tiek izsaukta metode intern (). Tāpēc atmiņa tiek piešķirta SCP. Otrajam priekšrakstam jauns virknes objekts netiek izveidots, jo str un str1 saturs ir vienāds. Tāpēc str1 tiek atgriezta atsauce uz objektu, kas izveidots pirmajā priekšrakstā. Tādējādi str un str1 norāda uz vienu un to pašu atmiņu. Tādējādi drukāšanas paziņojums tiek drukāts patiesi.
Java String intern() metodes piemērs
Faila nosaukums: InternExample.java
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 }}Izmēģiniet to tagad
Izvade:
false true
Java String intern() metodes 2. piemērs
Apskatīsim vēl vienu piemēru, lai izprastu stīgu intern koncepciju.
Faila nosaukums: 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 } }Izmēģiniet to tagad
Izvade:
true false true false true false
Punkti, kas jāatceras
Tālāk ir minēti daži svarīgi punkti, kas jāatceras saistībā ar intern() metodi:
1) Virknes literāls vienmēr izsauc intern() metodi neatkarīgi no tā, vai tiek pieminēta intern() metode kopā ar virknes literālu vai nē. Piemēram,
String s = 'd'.intern(); String p = 'd'; // compiler treats it as String p = 'd'.intern(); System.out.println(s == p); // prints true
2) Ikreiz, kad mēs izveidojam virknes objektu, izmantojot jauns atslēgvārds, tiek izveidoti divi objekti. Piemēram,
String str = new ('Hello World');
Šeit viens objekts tiek izveidots kaudzes atmiņā ārpus SCP, jo tiek izmantots jaunais atslēgvārds. Tā kā mēs esam ieguvuši virkni arī burtiski ('Hello World'); tāpēc SCP iekšienē tiek izveidots viens objekts, ja vien burtiskā 'Hello World' jau nav SCP.