Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Dúvida no Ex. 1 da Aula 3 - Java.lang

Portanto, devemos cria uma nova variável do tipo String para conseguir realizar a "mutabilidadde"? Porque?

6 respostas

Oi Ronaldo, tudo bem? Bom, no Java String são imutaveis, ou seja, você depois de criar uma string você não pode modifica-la. Sendo assim, todos os metodos que usamos que "alteram" a String, na verdade eles criam uma nova String com a modificação feita e a retorna.

Entende? Espero ter ajudado.

Ola, Ronaldo José Guastalli !

Ronaldo, Strings são imutáveis, nem com reza brava você vai conseguir mudar uma String.

Quando trabalhamos com a classe String, sempre será criada uma nova uma nova String e alocada na memória.

Ex.

String teste = "casa";
teste = "apartamento";

Nesse momento, tanto "casa" quanto "apartamento" foram criadas e vivem na memória, porém sua variável teste aponta para "apartamento".

Agora no caso das classes StringBuffer e StringBuilder a brincadeira é um pouco diferente.

Primeiro entenda direitinho a String, depois de uma boa estudada em StringBuffer e StringBuilder.

Entendeu direitinho o lance da String ?

Abraço!

Obrigado pela ajuda Wanderson e Cristiano! Uma duvida Cristiano, no seu comentário:

String teste = "casa";
teste = "apartamento";

Neste exemplo posso "acessar" a "casa" ou depois que modifiquei o "valor" de teste só posso apontar para "apartamento"?

Obrigado!

solução

Quando falamos de String na memória, podemos pensar o seguinte.

Ao criar uma String ela vai para um "Pool de Strings".

Quando criamos:

String teste = "casa";
teste = "apartamento";

Primeiro: ao criar e atribui: String teste = "casa"; "casa" além de ser atribuída a variável teste também foi para o pool de String.

Segundo, ao fazer: teste = "apartamento"; esta sendo criado "apartamento" do mesmo jeito que criou a "casa" e estamos fazendo nossa variável "teste" parar de apontar para "casa" e passar a apontar para "apartamento".

Nesse momento tanto "casa" quanto "apartamento" vivem no pool de Strings.

Durante todo esse processo, o Garbage Collector esta de olho em tudo que esta acontecendo E temos que ter em mente que o GC vai trabalhar normalmente de acordo com as regras dele.

Abraço!

Entendi, Obrigado!!!

ola, uma duvida, usando o exemplo do Cristaiano entao eu posso retroceder no pool de Strings e voltar para uma referencia anterior?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software