1
resposta

Pool de strings em collections

Minha duvida consiste nas duas instruções de add(): ** c.add("a"); c.add("a");** Devido ao Pool de Strings cogitei que a primeira instrução criaria um objeto String no pool e a segunda instrução acabaria por referencia-lo já que possuem o mesmo conteúdo, mas porque isto não ocorre?

1 resposta

O Pool de Strings em Java é uma área de memória reservada pela JVM (Java Virtual Machine) para armazenar objetos do tipo String. Quando um programa Java cria uma String, ela é armazenada nessa área de memória e, se outra String com o mesmo valor já existir no pool, a nova String simplesmente referencia a que já existe.

No entanto, quando você usa o operador new para criar uma String, o compilador Java criará um novo objeto e o armazenará no espaço heap reservado para a JVM. Cada String criada dessa maneira apontará para uma região de memória diferente com seu próprio endereço.

Portanto, no seu caso, se você estiver usando o operador new para criar as Strings que está adicionando à coleção, cada chamada para c.add("a") criará um novo objeto String, mesmo que o conteúdo seja o mesmo. Se você estiver usando literais de String (ou seja, apenas "a" sem o operador new), então o Java usará o Pool de Strings e as duas chamadas para c.add("a") referenciarão o mesmo objeto String no pool.

Espero que isso esclareça sua dúvida! Se você tiver mais perguntas, fique à vontade para perguntar.

  1. https://www.baeldung.com/java-string-pool
  2. https://www.javatpoint.com/string-pool-in-java
  3. https://brainly.com.br/tarefa/54936176