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.