Junior
За какво е необходим String Pool в Java?
sobes.tech AI
Отговор от AI
String Pool в Java е необходим за:
- Спестяване на памет: Предотвратява създаването на дублиращи се литерални низове. Ако низ с същата стойност вече съществува в пулата, се използва препратка към него.
- Оптимизация на производителността: Сравнението на низови литерали (
==) става бързо, тъй като се сравняват препратки, а не съдържанието на низовете.
При създаване на низови литерали (String s = "hello";), JVM първо проверява String Pool. Ако "hello" вече съществува, s се препраща към съществуващия обект. Ако не, се създава нов обект "hello" в пула, и s се препраща към него.
Използването на конструктора new String("hello") винаги създава нов обект String в хипа, независимо от String Pool. За да го добавите към пула, трябва да извикате метода intern().
// Пример за работа с String Pool
String s1 = "hello"; // Проверява пула, създава ако е необходимо, препраща към пула
String s2 = "hello"; // Проверява пула, намира съществуващия, също препраща към пула
System.out.println(s1 == s2); // true - препратките са еднакви
String s3 = new String("hello"); // Създава нов обект в хипа
System.out.println(s1 == s3); // false - препратките са различни
String s4 = s3.intern(); // Проверява пула за съдържанието на s3.
// Тъй като "hello" вече е в пула (от s1/s2),
// s4 се препраща към обекта в пула.
System.out.println(s1 == s4); // true - s1 и s4 се препращат към един и същи обект в пула