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

Java: The Complete Reference

Certificação de Java:

Java 11

Java 17

Java 21

0
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

Rômulo Borges de Almeida
Rômulo Borges de Almeida