Java String intern () -menetelmä palauttaa merkkijono-objektin kanonisen esityksen.
Merkkijonomenetelmän syntaksi intern()
on:
string.intern()
Tässä merkkijono on String
luokan objekti .
harjoittelija () Parametrit
intern()
Menetelmä ei ota parametreja.
harjoittelija () palautusarvo
- palauttaa merkkijonon kanonisen esityksen
Mikä on Java String Interning?
Merkkijonon internointi varmistaa, että kaikki saman sisällön merkkijonot käyttävät samaa muistia.
Oletetaan, että nämä kaksi merkkijonoa:
String str1 = "xyz"; String str2 = "xyz";
Koska sekä str1
ja str2
sisältö on sama, molemmat jouset samaa muistia. Java internaa merkkijonolitraalit automaattisesti.
Jos kuitenkin luot merkkijonoja käyttämällä new
avainsanaa, nämä merkkijonot eivät jaa samaa muistia. Esimerkiksi,
class Main ( public static void main(String() args) ( String str1 = new String("xyz"); String str2 = new String("xyz"); System.out.println(str1 == str2); // false ) )
Kuten tästä esimerkistä näet, sekä str1: llä että str2: lla on sama sisältö. Ne eivät kuitenkaan ole tasa-arvoisia, koska niillä ei ole samaa muistia.
Tässä tapauksessa voit käyttää intern()
menetelmää manuaalisesti siten, että samaa muistia käytetään jousille, joilla on sama sisältö.
Esimerkki: Java String -harjoittelija ()
class Main ( public static void main(String() args) ( String str1 = new String("xyz"); String str2 = new String("xyz"); // str1 and str2 doesn't share the same memory pool System.out.println(str1 == str2); // false // using the intern() method // now both str1 and str2 share the same memory pool str1 = str1.intern(); str2 = str2.intern(); System.out.println(str1 == str2); // true ) )
Kuten näette, sekä str1: llä että str2: lla on sama sisältö, mutta ne eivät ole alun perin samanarvoisia.
Käytämme sitten intern()
menetelmää niin, että str1 ja str2 käyttävät samaa muistipoolia. Kun olemme käyttäneet intern()
, str1 ja str2 ovat yhtä suuret.