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!