Care este conceptul String Pool în java?



String Pool în Java este un pool de șiruri stocate în memoria Java Heap. Acest tutorial vă va ajuta cu o abordare detaliată a Java String Pool cu ​​exemple.

Ai auzit de termen „String pool în Java?” Ei bine, dacă nu, ați aterizat la locul potrivit. String Pool în Java este un pool de șiruri care este stocat în Memorie Heap. Să săpăm puțin mai adânc și să înțelegem în detaliu acest concept de pool Java String.

Următoarele indicații vor fi discutate în acest articol:





Sa incepem!

suprascriere vs supraîncărcare în java

În primul rând, să înțelegem cât de exact este creat un obiect șir!



Cum se creează un șir?

Pentru a crea un obiect String în Java, există două moduri:

  • Folosind noul operator. De exemplu,
Șir s1 = șir nou („Joey”)
  • Folosind un șir literal sau o expresie constantă. De exemplu,
Șirul s1 = 'Joey' (șir literal) sau Șirul s1 = 'Joe' + 'y' (expresia constantă a șirului)

Acum, ce este acest pool de șiruri despre care vorbesc și cum este legată de aceasta crearea unui șir în Java. Lasă-mă să reduc dezordinea!

Ce este String Pool în Java?

String Pool este o zonă de stocare în heap-ul Java.



Alocarea șirurilor, ca toate alocarea obiectelor , se dovedește a fi o afacere costisitoare atât în ​​cazurile de timp, cât și de memorie. JVM efectuează câțiva pași în timp ce inițializează literele șirului pentru a crește performanța și a reduce cheltuielile cu memoria. Pentru a reduce numărul de obiecte String create în JVM, clasa String păstrează un grup de șiruri.

De fiecare dată când este creat un literal șir, fișierul JVM verifică mai întâi grupul literal de șiruri. Dacă șirul există deja în grupul de șiruri, revine o referință la instanța grupată. Dacă șirul nu există în pool, un nou obiect String se inițializează și este plasat în pool.

După ce am învățat teoretic conceptul, permiteți-mi să vă spun cum funcționează un pool de șiruri în Java pas cu pas cu ajutorul unor instanțe simple!

Cum funcționează String Pool în Java?

Când creați un șir nou ca acesta:

Șirul s1 = „Rachel”

JVM verifică automat dacă aceeași valoare există sau nu în pool-ul constant de șiruri.

  • dacă da, ocupă valoarea deja existentă.
  • Dacă nu, creează un șir nou de unul singur și îl adaugă în grupul de șiruri.

Dacă doriți să opriți acest comportament, creați un șir folosind noul operator:

Șir s1 = șir nou („Rachel”)

Acum, dacă doriți să adăugați acest șir la , Java vă oferă o metodă numită, metoda intern () pe care o puteți apela la metoda nativă intern () ca aceasta:

S1.intern()

Acum, vă voi arăta implementarea și funcționarea grupului de șiruri printr-un exemplu.

Dar înainte de asta, un scurt memento!

După cum știți, dacă comparați 2 obiecte folosind operatorul ==, compară adresele din memorie.

reluarea dezvoltatorului Python entry level

Deci, vom compara șirurile folosind == pentru a fi complet siguri că este sau nu același obiect.

Acum, să trecem la procesul nostru de implementare.

cum se face o listă legată în c

String Pool în Java: Diagrama fluxului

String-pool - Edureka

Acum să ne înțelegem ce se întâmplă aici pas cu pas:

  • Clasa este încărcată când este invocat.
  • JVM caută toate literele șirului din program
  • În primul rând, găsește variabila s1 care se referă la literalul „Apple” și se creează în memorie
  • O referință pentru literalul „Apple” este apoi plasată în memoria pool-ului constant de șiruri.
  • Apoi găsește o altă variabilă s2 care se referă la același șir literal „Mango”.
  • Apoi găsește o altă variabilă s3 care se referă la literalul „Apple”
  • Acum că JVM a găsit deja un șir literal „Apple”, atât variabilele s1 cât și s3 se vor referi la același obiect, adică „Apple”.

Program Java pentru String Pool

public class StringPoolExperiment {public static void main (String [] args) {String s1 = 'Rachel' String s2 = 'Rachel' String s3 = new String ('Rachel') String s4 = new String ('Rachel'). intern ( ) System.out.println (s1 == s2) // true System.out.println (s1 == s3) // false System.out.println (s1 == s4) // true}}

Ieșire:

Adevărat
Fals
Adevărat

În exemplul de mai sus, puteți vedea clar utilizarea inițializării șirurilor în toate cele trei moduri, adică

String s1 = 'Rachel' String s2 = 'Rachel' String s3 = new String ('Rachel') String s4 = new String ('Rachel'). Intern ()

Funcționarea internă a programului ar trebui probabil să fie clară acum.

Cu aceasta, am ajuns până la sfârșitul blogului meu. Sper că conținutul elaborat aici v-a ajutat să vă lărgiți baza de cunoștințe. Vom continua să ne scufundăm în lumea Java. Rămâneți aproape!

Verificați de Edureka, o companie de învățare online de încredere, cu o rețea de peste 250.000 de elevi mulțumiți răspândiți pe tot globul. Cursul de formare și certificare Java J2EE și SOA al Edureka este conceput pentru studenți și profesioniști care doresc să fie dezvoltator Java. Cursul este conceput pentru a vă oferi un început important în programarea Java și pentru a vă instrui atât pentru conceptele Java de bază, cât și pentru cele avansate, împreună cu diverse cadre Java, cum ar fi Hibernate și Primăvară .

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii a acestui blog „String Pool in Java” și vă vom contacta cât mai curând posibil.