1
resposta

String pode ser alterado com CharSequence e StringBuilder?

Olá. Fiquei confuso no último exemplo dado. Utilizando o objeto cs da classe StringBuilder, foi possivel alterar a String nome. De que forma isso ocorre?

String nome = "ALURA";
CharSequence cs = new StringBuilder("al");

nome = nome.replace("AL", cs);

System.out.println(nome);
1 resposta

Oi Leandro! Tudo certo?

As strings em Java são imutáveis na parte dos objetos criados, e não da variável. Como assim?

Ao fazer String nome = "ALURA";, você está criando um objeto do tipo String na memória, que é apontado pela variável nome. Esse objeto é uma sequência de caracteres que não pode ser modificada na memória. Ao fazermos nome = nome.replace("AL", cs);, o que acontece é que a JVM está criando um novo objeto na memória, que agora tem uma nova sequência de caracteres, e a variável nome, que antes apontava para "ALURA", agora apontará para "alURA".

Repare que, pra gente, nada aconteceu de diferente: é como se tivéssemos modificado normalmente a string. Porém, na memória do computador, várias alterações foram feitas.

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