next up previous contents index
Next: Classes et instances, membres Up: Objets Previous: Valeurs et expressions

        
Tableaux

Pour tout type t, le type des tableaux de t est noté t[] ; ce type est sous-type d'Object. La déclaration d'une variable de type tableau ne crée pas de tableau :

   int[] a;

Un tableau est un objet rassemblant un nombre donné de variables de même type, installées consécutivement en mémoire ; ces variables sont appelées les éléments du tableau ; le nombre d'éléments, appelé la longueur  du tableau, est représenté par le champ length  du tableau ; ce champ est non modifiable ; un tableau de longueur nulle est dit vide .

Un tableau est créé grâce à l'opérateur new[] . L'expression spécifiant la longueur, entre les crochets << [ >> et << ] >>, doit être de type int (ou d'un sous-type de int), et n'est pas nécessairement constante ; sa valeur doit être positive ou nulle. Les éléments d'un tableau sont toujours initialisés à la valeur nulle  de leur type. Voici une définition d'un tableau de int de longueur 4 :

     

   int[] a = new int[4];

Cette définition déclare t comme un nom dont le type est << tableau de int>> ; l'évaluation de int[4] crée un objet qui comporte un bloc de mémoire pouvant contenir quatre int ; enfin, t est initialisé par une référence à cet objet, et chacun de ses quatre éléments est initialisé à 0 (figure 1.3).

Il est aussi possible de définir un tableau en initialisant explicitement ses éléments, comme dans l'exemple suivant qui initialise a[0] à 1, a[1] à 2, etc. (figure 1.4) :

   int[] a = new int[] {1, 2, 3, 4}; 
   int[] a = {1, 2, 3, 4};            // FORME SIMPLIFIÉE

La seconde forme ne peut être employée que lors de la définition d'une variable ; la première forme, new t[] { ... }, est une expression de type t[] qui définit et initialise un tableau anonyme  et peut être employée dans d'autres contextes.


 \begin{figurette}% latex2html id marker 2341
\begin{center}
\leavevmode
\fbox{...
...leau avec initialisation explicite des
éléments.}
\end{center} \end{figurette}

Les éléments d'un tableau sont toujours accédés par indexation à partir de zéro : les quatre éléments du tableau a sont a[0], a[1], a[2] et a[3]. Ces a[i], et plus généralement a[exp], pour une expression arithmétique exp de type int (ou d'un sous-type de int), sont des variables désignant les éléments du tableau, et peuvent donc être le membre gauche d'une affectation :

  int k = ...;
  a[k+1] = 12;

C'est une erreur de tenter d'accéder à un élément hors des bornes du tableau (par exemple a[-4], a[4]). Cette tentative déclenche à l'exécution l'exception ArrayIndexOutOfBoundsException.

Signalons qu'un tableau, une fois défini, ne peut pas être redimensionné ; c'est pourquoi le type java.util.List, qui n'a pas cette limitation, est fréquemment utilisé à la place d'un type tableau. Cependant, la longueur d'un tableau n'a pas à être connue à la compilation (ce qui est une contrainte des tableaux en Pascal, C et C++) ; on peut définir un tableau dont la longueur, puis les éléments, sont lus sur l'entrée standard en cours d'exécution, ou encore dont la longueur est calculée à l'exécution, par une fonction quelconque :

  double[] t = new double[f(n)];


next up previous contents index
Next: Classes et instances, membres Up: Objets Previous: Valeurs et expressions
R. Lalement
2000-10-23