Junior
Kam ir nepieciešams String Pool Java?
sobes.tech AI
Atbilde no AI
Java String Pool ir nepieciešams šādiem mērķiem:
- Atmiņas taupīšana: Novērš dublētu string literalu izveidi. Ja tāds pats vērtības string jau pastāv poolā, tiek izmantota atsauce uz to.
- Veiktspējas optimizācija: String literalu salīdzināšana (
==) kļūst ātra, jo tiek salīdzinātas atsauces, nevis stringu saturs.
Veidojot string literalus (String s = "hello";), JVM vispirms pārbauda String Pool. Ja "hello" jau pastāv, s atsaucas uz esošo objektu. Ja nē, tiek izveidots jauns "hello" objekts poolā, un s atsaucas uz to.
new String("hello") konstruktors vienmēr izveido jaunu String objektu heapā, neatkarīgi no pool. Lai to pievienotu pool, ir jāizsauc intern() metode.
// String Pool darbības piemērs
String s1 = "hello"; // Pārbauda pool, ja nepieciešams, izveido, atsauce uz pool
String s2 = "hello"; // Pārbauda pool, atrod esošo, arī atsauce uz pool
System.out.println(s1 == s2); // true - atsauces ir vienādas
String s3 = new String("hello"); // Izveido jaunu objektu heapā
System.out.println(s1 == s3); // false - atsauces ir dažādas
String s4 = s3.intern(); // Pārbauda pool s3 saturu.
// Tā kā "hello" jau ir poolā (no s1/s2),
// s4 atsaucas uz pool objektu.
System.out.println(s1 == s4); // true - s1 un s4 atsaucas uz to pašu pool objektu