Junior
Šta je pool stringova u Javi?
sobes.tech АИ
Одговор од АИ
String Pool (Pool stringova) je oblast u heap (stogu) JVM-a gde se čuvaju literalni stringovi. Kada JVM naiđe na literal stringa, prvo proverava ovaj pool. Ako string već postoji, vraća referencu na postojeći objekat. Ako ne, kreira novi string objekat u poolu i vraća referencu na njega.
Prednosti:
- Ušteda memorije: Više referenci može ukazivati na isti string objekat u poolu.
- Performanse: Poređenje referenci (==) za stringove u poolu je brže od poređenja sadržaja stringova (equals()).
Primer:
// Kreira string u poolu (ako već ne postoji)
String s1 = "hello";
// Vraća referencu na isti objekat "hello" iz poola
String s2 = "hello";
// s1 i s2 ukazuju na isti objekat
System.out.println(s1 == s2); // Ispisaće true
// Kreira novi string objekat "hello" na heap-u, van poola
String s3 = new String("hello");
// s1 i s3 ukazuju na različite objekte
System.out.println(s1 == s3); // Ispisaće false
// Sadržaj stringova je isti
System.out.println(s1.equals(s3)); // Ispisaće true
Metod intern() može se koristiti za eksplicitno dodavanje stringa kreiranog sa new String() u pool ili za dobijanje reference na postojeći string u poolu sa istim sadržajem.
// Kreira novi string objekat "world" na heap-u
String s4 = new String("world");
// Dodaje "world" u pool (ako već nije tamo) i vraća referencu
String s5 = s4.intern();
// Kreira string u poolu (referenca na isti objekat na koji sada ukazuje s5)
String s6 = "world";
// s5 i s6 ukazuju na isti objekat u poolu
System.out.println(s5 == s6); // Ispisaće true