2
respostas

Duvida sobre video de imultavel

public static void main(String[] args) {
         String nome = "Teste";
               nome.replace("T","t"); //--  teste da video aula
        nome = nome.replace("T","t");   // --  meu teste
        System.out.println(nome);

Na video Aula foi feito um teste da classe String onde ele atribuiu um nome e tentou fazer um replace no teste da video aula o replace não deu certo e o Prof disse que não alterou pois a variavel String é imultavel ou seja não pode ser alterada. Mas no meu teste eu atribui no mesmo objeto o replace e alterou. Esta correto afirmar que este objeto String é imultavel conforme o video mesmo eu fazendo o replace da forma que eu fiz?

att.

2 respostas

Olá Carlos, como a vídeo aula disse uma String é realmente imutável, ou seja, você não conseguirá alterar seu valor como acontece com um java.util.List por exemplo, onde você pode adicionar e/ou remover itens do objeto e este mesmo objeto será alterado.

No exemplo que você citou a cima

public static void main(String[] args) {
    // Você criou uma string com o valor "Teste"
    String nome = "Teste";
    // Foi realizado um replace na string criada
    // porém o que acontece é que a string original "Teste"
    // não foi alterada, o método replace criou e
    // está retornando uma nova string com valor "teste"
    nome.replace("T","t"); //--  teste da video aula
    // Aqui você atribuiu essa nova string criada a variável nome
    nome = nome.replace("T","t");   // --  meu teste
    // E a imprimiu no console
    System.out.println(nome);
}

Ele conseguiu alterar pois na linha de comando onde ele fez o teste do replace, foi pedido para fazer um replace da variavel nome e depois atribuir na variavel nome o replace dela ou seja sobreescreveu os valores por isso deu a impressao de alterar ela...mas sim a string nesse caso sozinho como no teste do video mostra ela eh imultavel...espero q tenha ajudado esclarecer!