1
resposta

String e a imutabilidade

Olá,

Na aula 04 do curso de Java e java.lang: Programe com a classe Object e String, o professor informar que a String é um valor imutavel. Contudo ao efetuar o procedimento:

String nome = "Alura"; nome = nome.replace("A", "a");

o valor é alterado, teria como explicar o por que o professor informar que ele é imutavel?

1 resposta

Oi Givaldo, tudo bem?

Desculpe pela demora em obter retorno.

O que o professor fez foi apenas digitar nome.replace("A", "a"). Tecnicamente, em outros objetos, fazer apenas isso alteraria o objeto, porém, no caso da classe String, isso não é feito.

Quando você faz nome = nome.replace("A", "a"), por debaixo dos panos o Java está criando um novo objeto na memória do tipo String, chamado "alura". A referência nome agora irá apontar para esse objeto, e não para o "Alura". Por isso os objetos do tipo String são imutáveis: eles são criados na memória e, mesmo que utilizemos métodos para modificá-los, não estamos realmente modificando-os, mas criando um novo objeto com a modificação desejada.

Inclusive, caso conseguíssemos utilizar um método para chegar à palavra "Alura" novamente, a JVM seria inteligente o suficiente para se lembrar que esse objeto já existe nela e apenas "reapontar" a referência para a palavra existente.

Espero ter ajudado! Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

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