The Java-merkkijonoluokka harjoittelija() menetelmä palauttaa interned merkkijonon. Se palauttaa merkkijonon kanonisen esityksen.
esimerkkejä javascript-koodista
Sitä voidaan käyttää palauttamaan merkkijono muistista, jos se on luotu uudella avainsanalla. Se luo tarkan kopion keon merkkijonoobjektista String Constant Poolissa.
Allekirjoitus
Intern()-menetelmän allekirjoitus on annettu alla:
public String intern()
Palauttaa
internoitu merkkijono
String.intern()-metodin tarve ja toiminta
Kun merkkijono luodaan Javassa, se vie kasan muistia. Tiedämme myös, että String-luokka on muuttumaton. Siksi aina kun luomme merkkijonon uudella avainsanalla, vastaavalle merkkijonolle varataan uusi muisti kasaan, mikä on taulukon sisällöstä riippumatta. Harkitse seuraavaa koodinpätkää.
String str = new String('Welcome to JavaTpoint.'); String str1 = new String('Welcome to JavaTpoint'); System.out.println(str1 == str); // prints false
Println-käsky tulostaa false, koska jokaiselle merkkijonoliteraalille on varattu erillinen muisti. Näin muistiin luodaan kaksi uutta merkkijonoobjektia eli str ja str1. joka sisältää erilaisia viitteitä.
yhdistämisalgoritmi
Tiedämme, että objektin luominen on kallis toimenpide Javassa. Siksi Java-kehittäjät keksivät ajan säästämiseksi String Constant Pool (SCP) -konseptin. SCP on keon muistin sisällä oleva alue. Se sisältää ainutlaatuiset merkkijonot. Jotta merkkijonot asetetaan merkkijonoaltaaseen, täytyy kutsua harjoittelija() menetelmä. Ennen kuin luot objektin merkkijonovarantoon, JVM tarkistaa, onko merkkijono jo olemassa poolissa vai ei. Jos merkkijono on olemassa, sen viite palautetaan.
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
Yllä olevassa koodinpätkässä intern()-metodia kutsutaan String-objekteille. Siksi muisti varataan SCP:ssä. Toiselle lauseelle ei luoda uutta merkkijonoobjektia, koska str:n ja str1:n sisältö ovat samat. Siksi ensimmäisessä käskyssä luodun objektin viite palautetaan str1:lle. Siten str ja str1 osoittavat molemmat samaan muistiin. Tästä syystä print-lause tulostuu tosi.
Java String intern() -menetelmäesimerkki
Tiedoston nimi: InternExample.java
aseta näppäimistöön
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 }}Testaa nyt
Lähtö:
false true
Java String intern() -menetelmän esimerkki 2
Katsotaanpa vielä yksi esimerkki merkkijonoharjoittelijan käsitteen ymmärtämiseksi.
Tiedoston nimi: 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 } }Testaa nyt
Lähtö:
true false true false true false
Muistettavat kohdat
Seuraavassa on joitain tärkeitä asioita, jotka on muistettava intern()-menetelmästä:
base64 javascriptin purku
1) Merkkijonoliteraali käyttää aina intern()-metodia, mainitaanpa intern()-metodi yhdessä merkkijonoliteraalin kanssa vai ei. Esimerkiksi,
String s = 'd'.intern(); String p = 'd'; // compiler treats it as String p = 'd'.intern(); System.out.println(s == p); // prints true
2) Aina kun luomme merkkijono-objektin käyttämällä Uusi avainsanalla luodaan kaksi objektia. Esimerkiksi,
String str = new ('Hello World');
Tässä yksi objekti luodaan kasomuistiin SCP:n ulkopuolelle uuden avainsanan käytön vuoksi. Kuten olemme saaneet myös merkkijonon literaalin ('Hello World'); siksi yksi objekti luodaan SCP:n sisään, mikäli kirjaimellista 'Hello World' ei ole jo SCP:ssä.