grazie per i chiarimenti.

Originariamente inviata da
andbin
In Java un reference è un valore. Solo che invece di essere un valore numerico che puoi manipolare, stampare ecc..., per il programmatore Java un reference è un qualcosa di molto "opaco". Non sai che valore ha, non sai nemmeno quanto un reference occupa in bit (dipende dalla piattaforma e dalla implementazione della JVM). Sai solo che o fa riferimento ad un oggetto, oppure è null ovvero non fa riferimento ad un oggetto.
Più variabili di tipo reference possono avere lo stesso valore, appunto lo stesso reference, quindi faranno riferimento allo stesso oggetto. Tutto qui.
scusa se insisto ma continuo a non capire.
Inserisco un esempio del capitolo del manuale relativo ai reference:
codice:
public class CiProvoConIReference
{
public void cambiaReference(Data data)
{
data = new Data();
}
}
codice:
CiProvoConIReference ogg = new CiProvoConIReference();
Data dataDiNascita = new Data();
dataDiNascita.giorno = 14;
dataDiNascita.mese = 4;
dataDiNascita.anno = 2004;
ogg.cambiaReference(dataDiNascita);
System.out.println("Data di nascita = " + dataDiNascita.giorno + "-" + dataDiNascita.mese + "-" + dataDiNascita.anno);
e l'output è questo:
Data di nascita = 14-4-2004
Quello che non capisco è:
1) il metodo cambiaReference se non ho capito male si limita a dichiarare (prendendolo in input) un oggetto e ad istanziarlo. Ma allora come fa ad essere restituito quell'output se nel codice viene invocato il metodo dando in input sempre l'oggetto dataDiNascita? In teoria quell'oggetto a quel punto non dovrebbe essere sovrascritto e le variabili assumere valori nulli?
2) in quale pezzo del codice si vede l'utilizzo dei reference? Faccio questa domanda perchè in un altro esempio si notava chiaramente l'utilizzo.
L'esempio è questo:
codice:
Data unGiorno = new Data();
Data unAltroGiorno = unGiorno;
Quindi viene creato il primo oggetto (unGiorno) e poi viene dichiarato un altro oggetto (unAltroGiorno) che punterà all'oggetto creato prima.
Nell'esempio di prima questo non lo vedo.