logo

Java String intern()

The Java String razred pripravnik() metoda vrne internirani niz. Vrne kanonično predstavitev niza.

alternative watchcartoononline.io

Lahko se uporabi za vrnitev niza iz pomnilnika, če je ustvarjen z novo ključno besedo. Ustvari natančno kopijo predmeta niza kopice v naboru konstant nizov.

Podpis

Podpis metode intern() je podan spodaj:

 public String intern() 

Vračila

internirana vrvica

Potreba in delovanje metode String.intern().

Ko je niz ustvarjen v Javi, zasede pomnilnik v kopici. Prav tako vemo, da je razred String nespremenljiv. Zato se vsakič, ko ustvarimo niz s ključno besedo new, v kopici dodeli nov pomnilnik za ustrezen niz, kar je ne glede na vsebino matrike. Razmislite o naslednjem izrezku kode.

 String str = new String('Welcome to JavaTpoint.'); String str1 = new String('Welcome to JavaTpoint'); System.out.println(str1 == str); // prints false 

Stavek println natisne false, ker je za vsak nizovni literal dodeljen ločen pomnilnik. Tako se v pomnilniku ustvarita dva nova objekta niza, to sta str in str1. ki ima različne reference.

Vemo, da je ustvarjanje predmeta v Javi draga operacija. Da bi prihranili čas, so se razvijalci Jave domislili koncepta String Constant Pool (SCP). SCP je območje znotraj pomnilnika kopice. Vsebuje edinstvene nize. Če želite postaviti nize v nabor nizov, morate poklicati pripravnik() metoda. Preden ustvari predmet v nizu, JVM preveri, ali je niz že prisoten v bazenu ali ne. Če je niz prisoten, se vrne njegov sklic.

 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 

V zgornjem delčku kode je metoda intern() priklicana na objektih String. Zato je pomnilnik dodeljen v SCP. Za drugi stavek ni ustvarjen nov objekt niza, ker sta vsebini str in str1 enaki. Zato je sklic na objekt, ustvarjen v prvem stavku, vrnjen za str1. Tako str in str1 kažeta na isti pomnilnik. Zato se izjava za tiskanje natisne res.

Primer metode Java String intern().

Ime datoteke: 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 }} 
Preizkusite zdaj

Izhod:

 false true 

2. primer metode Java String intern().

Oglejmo si še en primer za razumevanje koncepta string intern.

Ime datoteke: 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 } } 
Preizkusite zdaj

Izhod:

 true false true false true false 

Točke, ki si jih je treba zapomniti

Sledi nekaj pomembnih točk, ki si jih morate zapomniti glede metode intern():

1) Nizovni literal vedno prikliče metodo intern(), ne glede na to, ali je metoda intern() omenjena skupaj z nizovnim literalom ali ne. na primer

 String s = 'd'.intern(); String p = 'd'; // compiler treats it as String p = 'd'.intern(); System.out.println(s == p); // prints true 

2) Kadarkoli ustvarimo objekt String z uporabo novo ključna beseda, sta ustvarjena dva predmeta. na primer

 String str = new ('Hello World'); 

Tukaj je en objekt ustvarjen v pomnilniku kopice zunaj SCP zaradi uporabe ključne besede new. Ker imamo tudi dobesedni niz ('Hello World'); zato je en objekt ustvarjen znotraj SCP, pod pogojem, da dobesedni 'Hello World' že ni prisoten v SCP.