Discussione: [JAVA] Memoria
View Single Post
Old 03-06-2015, 21:26   #2
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2776
E' curioso il fatto che in genere tutti si chiedono il contrario di quello che chiedi tu (cioè perché modificando unGiorno cambia anche unAltroGiorno)

No, unAltroNumero non cambia, perché nelle locazioni di memoria in cui vengono memorizzate le variabili di tipo primitivo viene memorizzato il valore (5.0 nel tuo caso).
Quindi, quando effettui un'assegnazione ad una variabile di tipo primitivo, quello che avviene (in generale) è che viene calcolato il valore della parte destra dell'espressione di assegnazione e poi quel valore viene messo nella locazione di memoria dedicata alla variabile nella parte sinistra dell'assegnazione.

Di fatto se scrivi
unAltroNumero = unNumero
il valore di unNumero viene copiato in unAltroNumero

Per le variabili di tipo non primitivo il discorso è diverso perché nella locazione di memoria ad esse dedicate non viene memorizzato il "valore" (che sarebbe un oggetto) bensì un riferimento a esso (o null).

Quindi quando scrivi
unAltroGiorno = unGiorno
avviene la stessa cosa di cui sopra ma unGiorno contiene un riferimento a un oggetto e copiando questo valore in unAltroGiorno quello che succede è che entrambe le variabili faranno riferimento allo stesso oggetto.
wingman87 è offline   Rispondi citando il messaggio o parte di esso