Sobes.tech
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ą