Junior — Middle
Wyjaśnij zasadę korzystania z StringPool i jego rolę w zarządzaniu łańcuchami znaków w Java
sobes.tech AI
Odpowiedź od AI
StringPool w Java to specjalny pul literałów łańcuchowych, który przechowuje unikalne instancje łańcuchów, aby oszczędzić pamięć i zwiększyć wydajność.
Gdy tworzysz łańcuch za pomocą literału, JVM sprawdza, czy taki łańcuch już istnieje w puli. Jeśli tak, zwraca odniesienie do istniejącego; jeśli nie, dodaje nowy.
To pozwala:
- Uniknąć duplikowania tych samych łańcuchów w pamięci.
- Szybciej porównywać łańcuchy przez odniesienie (==), jeśli pochodzą z puli.
Przykład:
String a = "hello";
String b = "hello";
System.out.println(a == b); // true, oba odwołują się do tego samego obiektu w StringPool
String c = new String("hello");
System.out.println(a == c); // false, c to nowy obiekt poza pulą