Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Consigo alterar a String com o replace

Na aula diz que não conseguimos trocar o conteudo da variavel, fiquem em duvida, pois no código a baixo, eu consigo.

    String nome = "Alura top";

    nome.replace("A", "b");

        System.out.println(nome);     //saída "Alura top" não funcionou.

        System.out.println(nome.replace("A", "C"));        //saída "Calura top" funcionou.

        System.out.println(nome); // saída "Alura top" ... mostra como original, sem a alteração.

O que acontece? ele me engana e só mostra a saída "mascarada" como se tivesse trocado, mas la dentro continua do mesmo jeito?

2 respostas
solução!

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!

Caracas!! Explicação TOOOOOOP!! Muito obrigado. Agora entendi perfeitamente.

Não tinha atribuido o retorno pra variavel realizar a mudança de verdade.