Quindi, con l'istruzione
codice:
Data oggetto1 = new Data();
io ho dichiarato prima una variabile e successivamente ho istanziato un oggetto. In questo modo la variabile punterà alla locazione di memoria dove si trova oggetto1, in poche parole conterrà l'indirizzo di memoria dove si trova oggetto1.
Con l'istruzione
codice:
Data oggetto2 = oggetto1;
vado a dichiarare una seconda variabile ma anzichè farla puntare ad una locazione di memoria di un nuovo oggetto (questo non avviene perchè non c'è new Data()) le passo l'indirizzo di memoria dove si trova l'oggetto1 creato in precedenza.
Quindi ci sono due variabili (oggetto1 e oggetto2) che contengono lo stesso indirizzo di memoria e a quell'indirizzo di memoria si trova l'oggetto oggetto1.
Se poi ci fosse una terza riga di codice del tipo
codice:
Data oggetto2 = new Data();
vorrebbe dire che abbiamo fatto in modo ora che la seconda variabile non punti più alla locazione di memoria dove si trova oggetto1 ma è stato creato un nuovo oggetto e che quindi la seconda variabile punta alla locazione di memoria del nuovo oggetto.
E' corretto?