sexta-feira, 17 de julho de 2015

Diferença entre variáveis de referência e tipos primitivos

O Post de hoje é sobre um assunto básico para qualquer programador que esteja iniciando com
Java e ainda não se aprofundou na estrutura da linguagem. Um exemplo simples para entender o que ocorre internamente quando manipulamos tipos primitivos e classes.

    Em Java, os ponteiros são implícitos, ou seja, a linguagem não cria objetos e faz cópias a cada ação. Quando você passa o valor de um Objeto para o outro utilizando o operador de atribuição (sinal de igual), é criada uma referência para aquele novo objeto, e não uma cópia.Em outras palavras, os dois apontam para o mesmo endereço de memória. Exemplo :
    Classe c1 = new Classe();
    Classe c2 = new Classe();
    c1.setAtributo("atributo");

    c2 = c1; // Caso você altere c1, o valor de c2 também será alterado.
Caso seja necessário fazer cópias de objetos com os mesmo valores, é possível utilizar o seguinte:
Classe c1 = new Classe ();
Classe c2 = new Classe ();
c1.setAtributo("atributo");

c2 = c1.clone(); // c1 e c2 não irão compartilhar o mesmo endereço de memória
Apenas as variáveis primitivas que fazem cópias de seus valores. Exemplo:
int a = 5;
int b = a;
b++;
System.out.Println("Valor de a: " + a); //Aqui o 'a' continua com o mesmo valor.
Espero ter ajudado quem estava com essa dúvida. Obrigado e até a próxima !

Nenhum comentário :

Postar um comentário