Junior
O que é um pool de strings em Java?
sobes.tech IA
Resposta da IA
O String Pool (Pool de Strings) é uma área no heap (montículo) da JVM onde os literais de strings são armazenados. Quando a JVM encontra um literal de string, ela verifica primeiro este pool. Se a string já existir, ela retorna uma referência ao objeto existente. Caso contrário, cria um novo objeto de string no pool e retorna uma referência a ele.
Vantagens:
- Economia de memória: Várias referências podem apontar para o mesmo objeto de string no pool.
- Desempenho: A comparação de referências (==) para strings no pool é mais rápida do que a comparação do conteúdo das strings (equals()).
Exemplo:
// Cria uma string no pool (se ainda não existir)
String s1 = "hello";
// Retorna uma referência ao mesmo objeto "hello" do pool
String s2 = "hello";
// s1 e s2 referenciam o mesmo objeto
System.out.println(s1 == s2); // Vai imprimir true
// Cria um novo objeto de string "hello" no heap, não no pool
String s3 = new String("hello");
// s1 e s3 referenciam objetos diferentes
System.out.println(s1 == s3); // Vai imprimir false
// O conteúdo das strings é igual
System.out.println(s1.equals(s3)); // Vai imprimir true
O método intern() pode ser usado para adicionar explicitamente uma string criada com new String() ao pool ou para obter uma referência a uma string existente no pool com o mesmo conteúdo.
// Cria um novo objeto de string "world" no heap
String s4 = new String("world");
// Adiciona "world" ao pool (se ainda não estiver lá) e retorna a referência
String s5 = s4.intern();
// Cria uma string no pool (referência ao mesmo objeto ao qual s5 agora aponta)
String s6 = "world";
// s5 e s6 referenciam o mesmo objeto no pool
System.out.println(s5 == s6); // Vai imprimir true