Per chi programma in Java, una variabile di tipo reference è un qualcosa di abbastanza "opaco", si sa solo che: o fa riferimento ad un oggetto oppure vale null. Non ci sono altre possibilità.
Non sai quanto è grande un reference in memoria (dipende dalla implementazione della JVM/SO), non puoi stamparne il valore (del reference) e non puoi farci "aritmetica" (la aritmetica dei puntatori che invece esiste in C/C++).
Ma alla fin fine un reference è un valore. Se fai:
Persona persona2 = persona1;
alla fine vuol dire che entrambe le variabili persona1 e persona2 avranno lo stesso valore. E quindi faranno riferimento allo stesso oggetto (se persona1 non null, chiaramente).
Quindi che tu faccia persona1.nome o persona2.nome stai accedendo alla stessa cosa.
E comunque, a parte ciò che si può fare in più con i puntatori di C/C++, la semantica è la stessa. In C/C++ se hai un puntatore ad una struttura dati ed assegni il puntatore ad un'altra variabile (dello stesso tipo), avrai 2 variabili che "puntano" alla stessa cosa, quindi potrai manipolare la struttura dati accedendoci con due variabili differenti. Il senso è esattamente lo stesso in Java.


Rispondi quotando