Java fa una distinzione netta tra classi e tipi primitivi, relativamente al modo in cui avviene l’allocazione in memoria. Fondamentalmente, quando si dichiara una variabile del tipo:
int x;
vengono subito allocati quattro byte per conservare il dato intero. Invece, se si utilizza una classe in qualità di tipo per una certa variabile, come ad esempio:
MyClass c;
in questo caso verrà creata subito una variabile che referenzia l’oggetto (reference) ma non verrà allocata memoria fino alla creazione vera e propria dell’istanza, tramite l’utilizzo dell’operatore new.