Junior
Para que serve o String Pool em Java?
sobes.tech IA
Resposta da IA
O String Pool em Java é necessário para:
- Economia de memória: Impede a criação de duplicados de literais de strings. Se uma string com o mesmo valor já existir no pool, uma referência a ela é usada.
- Otimização de desempenho: A comparação de literais de strings (
==) torna-se rápida, pois comparam referências, não o conteúdo das strings.
Ao criar literais de strings (String s = "hello";), a JVM verifica primeiro o String Pool. Se "hello" já existir, s referencia o objeto existente. Caso contrário, um novo objeto "hello" é criado no pool, e s referencia-o.
O uso do construtor new String("hello") sempre cria um novo objeto String no heap, independentemente do String Pool. Para colocá-lo no pool, é necessário chamar o método intern().
// Exemplo de funcionamento do String Pool
String s1 = "hello"; // Verifica o String Pool, cria se necessário, referencia ao pool
String s2 = "hello"; // Verifica o String Pool, encontra o existente, também referencia ao pool
System.out.println(s1 == s2); // true - referências iguais
String s3 = new String("hello"); // Cria um novo objeto no heap
System.out.println(s1 == s3); // false - referências diferentes
String s4 = s3.intern(); // Verifica o String Pool para o conteúdo de s3.
// Como "hello" já está no pool (de s1/s2),
// s4 referencia o objeto no pool.
System.out.println(s1 == s4); // true - s1 e s4 referenciam o mesmo objeto no pool