Como funciona a String pool no Java

A String Pool é uma área especial da Heap onde o Java armazena strings que podem ser reutilizadas para economizar memória e melhorar o desempenho da aplicação. Porém, apenas strings literais são automaticamente colocadas dentro da pool. Uma string literal é uma sequência de caracteres dentro de aspas duplas e representa um valor constante em tempo de compilação.
A String a é constante em tempo de compilação e por conta disso vai direto para a String Pool.
b também é constante em tempo de compilação, pois é resultado da concatenação de duas strings literais. Nesse caso o Java sabe que já existe uma String "Java" na pool e utiliza a mesma referência.
Já no caso da C nós estamos dizendo explicitamente para o Java que queremos alocar um novo espaço de memória para nossa String e consequentemente não vamos usar a String Pool.
O caso da E é bem parecido com a B, mas dessa vez ela não vai utilizar um valor da Pool. Isso porque agora não temos mais a concatenação de literais, mas sim variável e literal. Por conta disso o Java irá alocar um novo espaço na memória para ela.
Sabendo dessas informações, podemos afirmar que na primeira comparação o resultado é true Na segunda e terceira é false Na quarta é true novamente, pois ao chamar o método intern() nós obrigamos o Java a por nossa String na string pool ou então retornar a referência da String com mesmo conteúdo e que já está lá.
Prefere contéudo em vídeo?
Acompanhe o canal no youtube
Referências
Certificação de Java:
Subscribe to my newsletter
Read articles from Rômulo Borges de Almeida directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
