Les variables de types dit "primitifs" (int, boolean, double,char...) utilisés jusqu'à maintenant ne peuvent contenir qu'une seule information insécable (un nombre, un caractère, un état logique) et occupent toujours le même espace en mémoire : lorsqu'un programme déclare un "int" par exemple, le compilateur sait qu'il faudra réserver un espace mémoire de 4 octets pour le loger.
Les types de variable dit "structurés" peuvent contenir plusieurs informations qui peuvent être de tout type.
Pour loger ces informations, il faut que lors de l'exécution du programme l'espace mémoire nécessaire leur soit réservé.
En Java, cette réservation d'espace mémoire, ou allocation de mémoire, est effectuée à l'aide de l'opérateur spécifique "new".
L'utilisation d'une variable de type structuré est donc forcément précédée de l'étape d'allocation mémoire avec l'opérateur "new". .
Par exemple pour utiliser une variable appelée "truc" de type structuré (fictif) appelé "Machin" :
Machin truc; // déclaration d'une variable appelée "truc"; de type Machin truc=new Machin(); // réservation de mémoire pour la variable "truc" // la variable "truc" peut maintenant être utiliséeOn peut aussi effectuer la déclaration et l'affectation en une seule ligne :
Machin truc=new Machin(); // déclaration et réservation de mémoire pour la variable "truc" // la variable "truc" peut maintenant être utiliséeToute tentative d'utiliser une variable de type structuré sans avoir préalablement réservé la mémoire nécessaire par l'opérateur "new" entraîne une erreur.
En Java les types structurés sont des types Objet : leur nom commence par une majuscule, comme celui du type Machin dans l'exemple ci-dessus, ou comme ConsoleTexte.
Il y a cependant une exception à cette règle, ce sont les types array (=tableau,table, ou matrice en français) que nous allons voir maintenant.