Portanto, devemos cria uma nova variável do tipo String para conseguir realizar a "mutabilidadde"? Porque?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Portanto, devemos cria uma nova variável do tipo String para conseguir realizar a "mutabilidadde"? Porque?
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!
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?