Junior
151
Milleks on Java-s vajalik String Pool?
Vastus AI-lt
sobes.tech AI
String Pool in Java on vajalik järgmiste eesmärkide jaoks:
- Mälu kokkuhoid: Takistab string-literali duplikaatide loomist. Kui sama väärtusega string juba eksisteerib poolas, kasutatakse viidet sellele.
- Jõudluse optimeerimine: String-literali võrdlus (
==) muutub kiireks, kuna võrreldakse viiteid, mitte stringide sisu.
String-literale (String s = "hello";) loomisel kontrollib JVM kõigepealt String Pooli. Kui "hello" juba eksisteerib, viitab s olemasolevale objektile. Kui ei, luuakse uus "hello" objekt poolas ja s viitab sellele.
Konstruktor new String("hello") loob alati uue String objekti heapil, sõltumata poolast. Selle lisamiseks poola tuleb kutsuda välja meetod intern().
// String Pooli töö näide
String s1 = "hello"; // Kontrollib poola, loob vajadusel, viitab poolale
String s2 = "hello"; // Kontrollib poola, leiab olemasoleva, samuti viitab poolale
System.out.println(s1 == s2); // true - viited on samad
String s3 = new String("hello"); // Loob uue objekti heapil
System.out.println(s1 == s3); // false - viited on erinevad
String s4 = s3.intern(); // Kontrollib poola s3 sisu jaoks.
// Kuna "hello" on juba poolas (s1/s2),
// s4 viitab poolas olevale objektile.
System.out.println(s1 == s4); // true - s1 ja s4 viitavad samale objektile poolas