[RESOLVIDO] - Instância, atribuição ou referência..?

Boa tarde, pessoal.

Tenho uma dúvida sobre INSTÂNCIAS, ATRIBUIÇÕES E REFERÊNCIAS.

Quando eu uso o “new”, é uma INSTÂNCIA, disso eu sei. Um exemplo é:
Aluno aluno = new Aluno();

Mas se vc fizer assim:
aluno = bancoDeDados.consulta();
Isso é uma variável do tipo Aluno que está recebendo o vaor do método conculta() que há no Banco de Dados. O que seria isso? Instância também? Ou Atribuição? Já Referência acho que não seja, pois

Já li em algum lugar que Referência é quando a gente usa o findViewById, por exemplo:
Button bt = findViewById(R.id.button);// Isso é mesmo uma referência? Ou Atribuição? Instância eu sei que não é, pois só é instância se usar o “new”.

Desde já obg!

Quando uma instância é criada, ela é atribuída à uma variável, pois é através da variável que vc terá acesso à instância.

Quando dados são recuperados do banco, em algum momento, alguma instância será criada para receber esses dados.

Blz, INSTÂNCIA com o “new” e passar esse valor pra uma variável é ATRIBUIÇÃO, ok.

Nessa parte fiquei um pouco confusa. Não necessariamente recuperado do banco de dados, ali foi só um exemplo em que se está dando um valor à variável. Ex.:

Aluno aluno = banco.consultar();
String nome = "Maria José";
int numeroInt = 7;
String resultado = null;
double double = 10.5;

Em casos como esses acima, estou me referindo a dar um valor a uma variável usando o ( = ). Isso é uma ATRIBUIÇÃO, certo?

Já REFERÊNCIA, é quando se usa o findViewById(R.id.blablabla) por causa do R?

Vlw!

Veja esse código:

Aluno aluno = new Aluno();

Nesse código:

  • Uma instância foi criada alocada no espaço de memória 123, por exemplo;
  • Uma atribuição foi feita na variável aluno;
  • Logo após a atribuição, o valor da variável aluno é uma referência (ponteiro) ao espaço de memória 123 alocado com a instância criada.
1 curtida

Entendi. Blz! Obg!

Para exercitar. E se eu fizer isso?

Aluno aluno = new Aluno();
Aluno aluno2 = aluno;

O que estará guardado na variável aluno2?

Em Aluno aluno = new Aluno();
new Aluno(); É uma INSTÂNCIA.
E à aluno, ATRIBUIÇÃO.

O mesmo com Aluno aluno2 = aluno; ATRIBUIÇÃO.

O que seria quando se usa o findViewById? ATRIBUIÇÃO ou REFERÊNCIA? INSTÂNCIA NÃO É.

Sim, no exemplo que mandei, ocorre uma atribuição. Mas para ficar mais completo, seria a atribuição da referência de aluno (da instância que foi criada) para a variável aluno2, ou seja, ambas variáveis estarão com a mesma referência. Depois faça um teste e execute esse código:

Aluno aluno = new Aluno();
Aluno aluno2 = aluno;

System.out.println(aluno); // irá imprimir um valor X
System.out.println(aluno2); // irá imprimir o mesmo valor X

aluno = null;

System.out.println(aluno); // agora irá imprimir NULL
System.out.println(aluno2); // ainda irá imprimir o valor X

Sobre isso:

O método deve retornar uma referência de um objeto, de um determinado tipo, que pode ser atribuída à uma variável de mesmo tipo.

Fato.

I/System.out: sistema.escola.Aluno.Aluno@4a16a57
I/System.out: sistema.escola.Aluno.Aluno@4a16a57
I/System.out: null
I/System.out: sistema.escola.Aluno.Aluno@4a16a57

Até pq o valor de aluno foi mudado depois a atribuição dada a aluno2, por isso que o segundo sout do aluno é null, mas do aluno2, como ele não foi alterado depois do seu primeiro sout, é a mesma referência do seu primeiro sout.

Uma das coisas que me motivou a fazer essas perguntas foi como documentar a aplicação, pra saber oq dizer em cada comentário, entende? É isso.

O esclarecimento vlw e mt, Obg.

1 curtida