logo

Java String intern()

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ä.