Portanto, devemos cria uma nova variável do tipo String para conseguir realizar a "mutabilidadde"? Porque?
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?