logo

Java String intern()

The Clasa Java String stagiar() metoda returnează șirul internat. Returnează reprezentarea canonică a șirului.

realizarea de tabele din latex

Poate fi folosit pentru a returna șirul din memorie dacă este creat de un nou cuvânt cheie. Acesta creează o copie exactă a obiectului șir heap în String Constant Pool.

Semnătură

Semnătura metodei intern() este dată mai jos:

 public String intern() 

Se intoarce

șir internat

Necesitatea și funcționarea metodei String.intern().

Când un șir este creat în Java, acesta ocupă memorie în heap. De asemenea, știm că clasa String este imuabilă. Prin urmare, ori de câte ori creăm un șir folosind cuvântul cheie nou, noua memorie este alocată în heap pentru șirul corespunzător, care este indiferent de conținutul matricei. Luați în considerare următorul fragment de cod.

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

Declarația println se afișează fals deoarece este alocată memorie separată pentru fiecare literal șir. Astfel, două noi obiecte șir sunt create în memorie, adică str și str1. care deține referințe diferite.

text wrapper css

Știm că crearea unui obiect este o operațiune costisitoare în Java. Prin urmare, pentru a economisi timp, dezvoltatorii Java au venit cu conceptul de String Constant Pool (SCP). SCP este o zonă din interiorul memoriei heap. Conține șirurile unice. Pentru a pune șirurile în pool-ul de șiruri, trebuie să apelați stagiar() metodă. Înainte de a crea un obiect în pool-ul de șiruri, JVM-ul verifică dacă șirul este deja prezent în pool sau nu. Dacă șirul este prezent, referința acestuia este returnată.

 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 

În fragmentul de cod de mai sus, metoda intern() este invocată pe obiectele String. Prin urmare, memoria este alocată în SCP. Pentru a doua instrucțiune, nu este creat niciun obiect șir nou, deoarece conținutul str și str1 sunt același. Prin urmare, referința obiectului creat în prima instrucțiune este returnată pentru str1. Astfel, str și str1 indică ambele către aceeași memorie. Prin urmare, declarația print se imprimă adevărat.

Exemplu de metodă Java String intern().

Nume de fișier: 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 }} 
Testează-l acum

Ieșire:

 false true 

Metoda Java String intern() Exemplul 2

Să mai vedem un exemplu pentru a înțelege conceptul de intern șir.

Nume de fișier: InternExample2.java

citește fișierele json
 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 } } 
Testează-l acum

Ieșire:

 true false true false true false 

Puncte de reținut

Următoarele sunt câteva puncte importante de reținut cu privire la metoda intern():

1) Un literal șir invocă întotdeauna metoda intern(), indiferent dacă se menționează metoda intern() împreună cu literalul șir sau nu. De exemplu,

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

2) Ori de câte ori creăm un obiect String folosind nou cuvânt cheie, sunt create două obiecte. De exemplu,

hashtable versus hashmap
 String str = new ('Hello World'); 

Aici, un obiect este creat în memoria heap în afara SCP-ului din cauza utilizării noului cuvânt cheie. Deoarece avem și literalul șirului ('Hello World'); prin urmare, un obiect este creat în interiorul SCP, cu condiția ca literalul „Hello World” să nu fie deja prezent în SCP.