[RESOLVIDO] - Instância, atribuição ou referência..?
8 respostas
java
wlcs22
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”.
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.
wlcs22
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.:
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!
Lucas_Camara1 like
Veja esse código:
Alunoaluno=newAluno();
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.
wlcs22
Entendi. Blz! Obg!
Lucas_Camara
Para exercitar. E se eu fizer isso?
Alunoaluno=newAluno();Alunoaluno2=aluno;
O que estará guardado na variável aluno2?
wlcs22
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 É.
Lucas_Camara
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:
Alunoaluno=newAluno();Alunoaluno2=aluno;System.out.println(aluno);// irá imprimir um valor XSystem.out.println(aluno2);// irá imprimir o mesmo valor Xaluno=null;System.out.println(aluno);// agora irá imprimir NULLSystem.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.
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.