Sobes.tech
Junior

De ce nu creăm un șir folosind constructorul new String()?

sobes.tech AI

Răspuns de la AI

Crearea unui șir folosind new String() creează întotdeauna un nou obiect String în heap, chiar dacă un șir cu aceeași valoare există deja în String Pool.

În schimb, literalele de șiruri (de exemplu, "bună") sunt plasate în String Pool. Dacă un șir cu acea valoare există deja în String Pool, se folosește obiectul existent. Utilizarea literalei permite JVM să optimizeze utilizarea memoriei.

Prin urmare, new String() duce la o consumare excesivă a memoriei și poate reduce performanța din cauza creării de obiecte inutile. Preferăm să folosim literale de șiruri sau alte metode de creare a șirurilor (cum ar fi String.valueOf()) pentru economisirea resurselor.

// Nu recomandat. Crează întotdeauna un nou obiect în heap.
String str1 = new String("bună");

// Recomandat. Folosește String Pool, poate folosi un obiect existent.
String str2 = "bună";

// Rezultatul comparației poate fi diferit
System.out.println(str1 == str2); // De obicei false, deoarece sunt obiecte diferite