Olá Lucas! Tudo bem?
É comum passar um tempo para entender o que ocorre nesse caso! 😄
Acontece que no exemplo que nos deu aqui, você não está de fato atribuindo um novo valor a String.
O fato de utilizarmos o .replace() não significa que estamos atribuindo um novo valor para a String. O que acontece nesse caso, é que você está utilizando o System.out.println para "imprimir" o retorno do método replace().
Imagine que o método replace() está à nossa disposição para realizar a troca de caracteres em qualquer String. Podemos utilizá-lo várias vezes, realizando a troca de caracteres da forma que queremos. O que ele faz é copiar os caracteres da String em questão, e realizar a troca da forma que o instruímos... mas isso ocorre fora da String. Podemos entender que o que está sendo alterado é uma cópia do conteúdo da String.
Mas em seguida, quando imprime a String nome, percebemos que o seu conteúdo não foi alterado.
Como te mostro no exemplo abaixo:
public class TesteString {
public static void main(String[] args) {
String nome = "Mario";
nome.replace('o', 'a');
System.out.println(nome);
}
}
Perceba que no exemplo nós utilizamos o nome.replace('o','a'), mas não atribuímos o retorno do método replace a nenhuma String
No caso, para que a String seja alterada, ao usar o replace() nós devemos atribuir o novo valor:
nome = nome.replace('o', 'a');
Dessa forma a String nome recebe o retorno do método replace
Consegui te ajudar com essa resposta?
Se ainda houver dúvidas sobre esse tema, é só falar! 😃
Bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!