Middle
Ce se întâmplă atunci când se folosește sintaxa String s1 = "asd"?
sobes.tech AI
Răspuns de la AI
La utilizare a sintaxei String s1 = "asd";:
- Pool de șiruri (String Pool): JVM verifică dacă literalul de șir
"asd"există deja în pool-ul de șiruri. Pool-ul de șiruri este o zonă specială în heap unde sunt stocate literalurile de șir unice pentru economisirea memoriei. - Crearea obiectului:
- Dacă
"asd"există deja în pool, variabilas1va face pur și simplu referire la acel obiect existent în pool. - Dacă
"asd"nu există, JVM creează un nou obiectStringîn pool-ul de șiruri cu valoarea"asd".
- Dacă
- Atribuirea referinței: Variabila
s1primește o referință la obiectulStringdin pool-ul de șiruri.
Spre deosebire de String s2 = new String("asd");, atunci când se folosește un literal, obiectul poate fi reutilizat de alte referințe care indică același literal, ceea ce duce la o optimizare a memoriei.