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