Longueur d'un tableau et dépassement des bornes

           

On a la possibilité de connaître la longueur d'un tableau référencé par la variable T en utilisant T.length;
length est en quelque sorte un attribut du tableau, attribut que l'on peut d'ailleurs uniquement lire.

Le langage java ne permet pas le débordement d'un tableau. Si on tente de lire le tableau en un indice qui n'est pas autorisé, ou bien d'écrire à un tel indice, il y a ce qui s'appelle le lancement d'une exception. Quand une exception est lancée, toutes les instructions qui suivent sont ignorées jusqu'à ce qu'on attrape l'exception ou bien que le thread (pour vous, le programme) en cours d'exécution se termine. Le sujet des exceptions sera étudié plus tard.

Voici notre exemple :


class TableauC {
public static void main(String[] arg) {
int[] tableau = new int[3];

System.out.println("Taille du tableau : " + tableau.length);
tableau[tableau.length] = 1;
System.out.println("bonjour");
}
}

On obtient à l'exécution :

Taille du tableau : 3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at TableauC.main(TableauC.java:7)

Pour accéder au fichier TabeauC.java.


tableau[tableau.length]; : l'indice tableau.length déborde du tableau puisque le plus grand indice de ce tableau est nécessairement tableau.length-1 cette exception se propage jusqu'à la fin du programme qui se termine donc, avec le un message qu'on peut voir sur la sortie du programme. La dernière instruction du programme n'a pas été exécutée.


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