Junior
Kas ir virkņu baseins Java?
sobes.tech AI
Atbilde no AI
String Pool ir vieta JVM heapā, kur glabājas virknes literāli. Kad JVM sastop virknes literālu, tā vispirms pārbauda šo poolu. Ja virkne jau pastāv, tiek atgriezta saite uz esošo objektu. Ja nē, tiek izveidots jauns virknes objekts poolā un tiek atgriezta saite uz to.
Priekšrocības:
- Atmiņas ietaupījums: Vairāki norādītāji var norādīt uz vienu un to pašu virknes objektu poolā.
- Veiktspēja: Salīdzināšana ar norādītājiem (==) uz virknes no poola ir ātrāka nekā virknes satura salīdzināšana (equals()).
Piemērs:
// Izveido virkni poolā (ja tā vēl nav)
String s1 = "hello";
// Atgriež saiti uz to pašu "hello" objektu no poola
String s2 = "hello";
// s1 un s2 norāda uz vienu un to pašu objektu
System.out.println(s1 == s2); // Izvadīs true
// Izveido jaunu virknes objektu "hello" heapā, ne poolā
String s3 = new String("hello");
// s1 un s3 norāda uz dažādiem objektiem
System.out.println(s1 == s3); // Izvadīs false
// Virkņu saturs ir vienāds
System.out.println(s1.equals(s3)); // Izvadīs true
Metodi intern() var izmantot, lai tieši pievienotu virkni, kas izveidota ar new String(), poolā vai iegūtu saiti uz esošo virkni ar tādu pašu saturu no poola.
// Izveido jaunu virknes objektu "world" heapā
String s4 = new String("world");
// Pievieno "world" poolā (ja tā tur vēl nav) un atgriež saiti
String s5 = s4.intern();
// Izveido virkni poolā (saite uz to pašu objektu, uz kuru tagad norāda s5)
String s6 = "world";
// s5 un s6 norāda uz vienu un to pašu objektu poolā
System.out.println(s5 == s6); // Izvadīs true