JAVA imutável vs mutável

Olá a todos, estou começando a estudar o tópico Immutable vs Mutable, e é realmente maravilhoso como os objetos Immutable salvam você de muitos bugs que seu código pode gerar quando está em produção. Vamos definir Mutable e Immutable primeiro:

  • Mutável: um objeto é mutável quando você pode alterar seu valor e ele realmente cria uma nova referência na memória deste objeto, por exemplo:

    int a=0;
    while(a<10){

    System.out.println(a);
    a
    +=1;

    }

    O que está acontecendo aqui é que ‘uma’ variável está sendo criada na memória (com uma nova referência lá) uma e outra vez até atingir o valor 9, o que não é bom quando você está desenvolvendo aplicativos onde a performance é o objetivo principal que você precisa para manter, em contraste, temos nossos salvadores os objetos imutáveis ​​!.

  • Imutável: um objeto é imutável quando você não pode alterar seu valor uma vez que é referenciado, pois ele cria apenas uma referência na memória, a única coisa que você poderia fazer é redeclarar o objeto que virá a perder todos os valores que tinha. Algumas das classes que são imutáveis ​​em java são as classes Wrapper, como Integer, Float, Double, Character, Byte, por exemplo:

    Integer a=0;
    while(a<10){

    System.out.println(a);
    a
    +=1;

    }

    O que está acontecendo aqui é muito diferente do que aconteceu antes com o objeto mutável, neste caso a variável ‘a’ está sendo criada uma vez na memória e, como o objeto é realmente imutável, ele não cria uma nova referência na memória, atualiza o já criado outro exemplo de Objetos Imutáveis ​​seria este:

    Integer a=0;
    Integer b=0;
    a
    =b;
    b
    =1;
    System.out.println(a); //it outputs 1

Neste exemplo os objetos quando você diz que ‘a = b’ estão se referindo ao mesmo espaço da memória, desta forma, se você mudar b estará se referindo à mesma posição de a o que girará que a obtém o mesmo valor de b, quando vemos isso no lado do objeto mutável, você está, na verdade, criando 2 referências diferentes na memória, o que fará com que você altere 1 valor sem alterar o outro ou bagunçar com ele.

Espero que gostem, fique à vontade para comentar qualquer sugestão 🙂

Sayonara!