Un tableau à deux dimensions                        

Un tableau à deux dimensions

     

Cet exemple montre comment on peut définir un tableau à deux dimensions d'int et lui allouer de la place mémoire.
Deux méthodes sont proposées.

L'exemple illustre aussi, implictement, le principe du ramasse-miettes. Le ramasse-miettes est un processus qui tourne de temps à autre, à la recherche d'espace-mémoire qui ne soit plus référencé par une variable du programme et libère alors un tel espce. C'est vrai pour les objets comme pour les tableaux. Cela signifie qu'il n'est pas utile d'utiliser des instructions du type de l'instruction free du langage C.
Grâce au ramasse-miettes, on ne désalloue pas le premier tableau alloué avant d'utiliser la variable tableau pour référencer un autre tableau.

class TableauDouble {
   public static void main(String[] arg) {
      int[][] tableau;
      int i, j;

      tableau = new int[2][3];
      for (int i = 0;i < tableau.length; i++) {
         for (int j = 0;j < tableau[i].length;j++) {
            tableau[i][j] = i + j;
            System.out.print(tableau[i][j] + " ");
         }
         System.out.println();
      }
      System.out.println();
      
    tableau = new int[3][];
    for (i = 0; i < tableau.length; i++) {
	tableau[i] = new int[i + 1];
	for (j = 0; j < tableau[i].length; j++) {
	    tableau[i][j] = i + j;
            System.out.print(tableau[i][j] + " ");
         }
         System.out.println();
      }  
      System.out.println(); 
   }
}

On obtient à l'exécution :

0 1 2
1 2 3

0
1 2
2 3 4

Pour accéder au fichier TableauDouble.java.


tableau = new int[2][3]; : on déclare et on construit un tableau à deux lignes et trois colonnes..
Cette méthode print écrit la chaîne de caractères mais ne passe pas après à la ligne, contrairement à la méthode println (ln comme line, ligne en anglais).
tableau[i][j] est l'entier qui se trouve à la i ème ligne et j ème colonne.
tableau = new int[3][] : on réaffecte tableau ; un ramasse-miettes va libérer l'espace-mémoire alloué au précédent tableau. Le nouveau tableau défini est destiné à recevoir deux références de tableaux à une dimension d'entiers.
tableau[i] = new int[i + 1] : le nouveau tableau à deux dimensions ne sera pas rectangulaire puisque la ligne d'indice i est de longueur i + 1.

© Irène Charon Télécom ParisTech 2010