Tipi reference
I tipi non primitivi sono tipi reference. Il nome significa riferimento e in effetti possiamo pensarle come a puntatori ad una certa area di memoria. Un tipo primitivo invece può essere pensato come direttamente l'area di memoria:
La differenza è notevole. Consideriamo questo codice :
public class Main {
public static void main(String[] args)
{
int primitivo = 1;
TNP
nonPrimitivo = new TNP();
nonPrimitivo.nome = "Mario";
nonPrimitivo.anno = 20;
int primitivo2 = primitivo;
TNP
nonPrimitivo2 = nonPrimitivo;
primitivo2
= 2;
nonPrimitivo2.nome = "Giovanni";
System.out.println(primitivo);
System.out.println(nonPrimitivo.nome + " " + nonPrimitivo.anno);
}
}
public class TNP {
String nome;
int anno;
}
Si dichiarano un tipo primitivo (int) e uno non primitivo (TNP). Poi si dichiarano altri due tipi (2), si copiano i tipi di dato di partenza. e infine assegnamo loro un altro valore.
La variabile primitivo2 al momento della copia verrà copiata fisicamente.
Il reference nonPrimitivo2 invece verrà copiato fisicamente, ma punterà sembre alla stessa area di memoria.
Quando si modificano il valore della variabile , la prima rimarrà quella che era. Invece modificando il valore riferito dal reference ovviamente si modificherà anche il valore riferito dall'altro reference :


Nessun commento:
Posta un commento