Java, i dati primitivi e la RAM

Java, i dati primitivi e la RAM

Non molto tempo fa abbiamo cercato di dipanare la matassa intorno alla gestione dei reference.
In questo post invece cerchiamo di capire come funzionano i dati primitivi nella memoria del PC.
Innanzitutto un dato primitvo NON è un oggetto!
Tuttavia, ogni dato primitivo ha una corrispondente wrapper class che può essere usata per rappresnetarlo come un oggetto. Ma in questo post non parleremo di questo.
Ci occuperemo invece di quali sono i dati primitivi in java e come vengono rappresentati nella RAM del PC.
Possiamo dividere i dati primitivi in 3 categorie:

  • integral types (byte, short, int, long e char)
  • floating-point types (float, double)
  • boolean type (boolean)

E’ lecito scrivere:

int intVar = 10;

Cosa succede nella RAM del PC quando noi scriviamo una tale istruzione?
La figura di seguito dovrebbe spiegarlo.
Il dato primitivo nella RAM
Nella cella di memoria con sfondo verde è stato inserito il valore del nostro tipo primitivo; in questo caso il valore 10. Da adesso in poi ogni istruzione di modifica della variabile intVar modificherà direttamente il valore contenuto in quella cella di memoria. Quindi scrivendo:

intVar = 163;

java modificherà per noi il contenuto della cella in figura.
E’ molto importante notare e capire che sebbene java gestisca nello stesso modo gli oggetti e i dati primitivi, ciò che accade nella RAM cambia poiché gli oggetti sono gestiti tramite reference! A tal proposito è bene richiamare l’articolo scritto sulla gestione dei reference.