Junior
Kas yra eilutinių duomenų baseinas Java?
sobes.tech AI
Atsakymas iš AI
String Pool (String Pool) yra sritis JVM heap (krepšelio) vietoje, kur saugomos eilutės literatūros. Kai JVM susiduria su eilutės literatūra, ji pirmiausia tikrina šį pool. Jei eilutė jau egzistuoja, grąžina nuorodą į esamą objektą. Jei ne, sukuria naują eilutės objektą pool'e ir grąžina nuorodą į jį.
Privalumai:
- Atminties taupymas: Kelios nuorodos gali rodyti į tą patį eilutės objektą pool'e.
- Našumas: Nuorodų palyginimas (==) pool'e esančioms eilutėms yra greitesnis nei turinio palyginimas (equals()).
Pavyzdys:
// Sukuria eilutę pool'e (jei dar nėra)
String s1 = "hello";
// Grąžina nuorodą į tą patį "hello" objektą iš pool'o
String s2 = "hello";
// s1 ir s2 rodo į tą patį objektą
System.out.println(s1 == s2); // Išves true
// Sukuria naują eilutės objektą "hello" heap'e, ne pool'e
String s3 = new String("hello");
// s1 ir s3 rodo į skirtingus objektus
System.out.println(s1 == s3); // Išves false
// Eilutės turinys yra vienodas
System.out.println(s1.equals(s3)); // Išves true
intern() metodas gali būti naudojamas aiškiai pridėti new String() sukurtą eilutę į pool'ą arba gauti nuorodą į esamą eilutę pool'e su tokiu pačiu turiniu.
// Sukuria naują eilutės objektą "world" heap'e
String s4 = new String("world");
// Prideda "world" į pool'ą (jei dar nėra) ir grąžina nuorodą
String s5 = s4.intern();
// Sukuria eilutę pool'e (nuoroda į tą patį objektą, į kurį dabar nurodo s5)
String s6 = "world";
// s5 ir s6 rodo į tą patį objektą pool'e
System.out.println(s5 == s6); // Išves true