Como o nome sugere, o String Pool em Java é um pool de Strings armazenado na Memória Heap do Java. Sabemos que String é uma classe especial em Java e podemos criar objetos String usando o operador new, bem como fornecendo valores entre aspas duplas.
String Pool em Java
Aqui está um diagrama que explica claramente como o String Pool é mantido no espaço de heap do Java e o que acontece quando usamos diferentes maneiras de criar Strings. O String Pool é possível apenas porque a String é imutável em Java e sua implementação do conceito de internação de String. O pool de strings também é um exemplo do padrão de design Flyweight. O String Pool ajuda a economizar muito espaço para o tempo de execução do Java, embora leve mais tempo para criar a String. Quando usamos aspas duplas para criar uma String, primeiro ele procura uma String com o mesmo valor no String Pool, se encontrada, ela apenas retorna a referência, caso contrário, cria uma nova String no pool e então retorna a referência. No entanto, ao usar o operador `new`, forçamos a classe String a criar um novo objeto String no espaço de heap. Podemos usar o método `intern()` para colocá-lo no pool ou referir-se a outro objeto String do pool de strings que tenha o mesmo valor. Aqui está o programa Java para a imagem do String Pool:
package com.journaldev.util;
public class StringPool {
/**
* Java String Pool example
* @param args
*/
public static void main(String[] args) {
String s1 = "Cat";
String s2 = "Cat";
String s3 = new String("Cat");
System.out.println("s1 == s2 :"+(s1==s2));
System.out.println("s1 == s3 :"+(s1==s3));
}
}
A saída do programa acima é:
s1 == s2 :true
s1 == s3 :false
Leitura recomendada: Classe String Java
Quantas Strings estão sendo criadas no String Pool?
Às vezes, em uma entrevista de Java, você será questionado sobre o pool de strings. Por exemplo, quantas strings estão sendo criadas na declaração abaixo;
String str = new String("Cat");
Na declaração acima, será criada apenas uma ou duas strings. Se já existir uma string literal “Cat” no pool, então apenas uma string “str” será criada no pool. Se não houver uma string literal “Cat” no pool, ela será primeiro criada no pool e depois no espaço de heap, totalizando 2 objetos de string criados. Leia: Perguntas de Entrevista sobre Strings em Java
Source:
https://www.digitalocean.com/community/tutorials/what-is-java-string-pool