HOWTO · Java

Déclarer un tableau en Java

Cet article explique comment déclarer un tableau en Java.

Sur cette page

Pour déclarer un tableau, placez [] après le type de ses éléments, comme dans int[] scores;. Cela déclare la variable ; créez le tableau séparément en indiquant sa longueur ou initialisez-le avec des valeurs.

Déclarer un tableau à une dimension

Un tableau stocke un nombre fixe de valeurs d’un même type. Déclarer une variable tableau établit son type, mais ne crée pas d’objet tableau et n’en détermine pas la longueur. Voici deux syntaxes courantes : int[] scores; et int scores[];. Dans la première, les crochets suivent le type des éléments ; c’est la forme conventionnelle. Les deux syntaxes sont valides. Après avoir déclaré une variable locale, affectez-lui un tableau avant de lire ou de modifier ses éléments.

Exécutez cet exemple :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

import java.util.Arrays;

public class DeclareAnArray {
  public static void main(String[] args) {
    int[] scores = new int[3];
    scores[0] = 18;
    scores[1] = 24;
    scores[2] = 31;
    System.out.println(Arrays.toString(scores));
  }
}

L’exemple est fourni sous forme de code exécutable ; aucun résultat d’exécution observé n’est présenté ici. new int[3] crée un tableau de trois cases et affecte sa référence à scores. Dans un tableau int nouvellement créé, chaque case contient initialement 0 ; les affectations remplacent donc ces valeurs initiales. Les indices d’un tableau commencent à 0, si bien que le dernier indice valide est inférieur de un à sa longueur. La longueur est fixée lors de la création du tableau ; pour stocker un nombre différent d’éléments, créez un autre tableau.

Initialiser un tableau à une dimension

Lorsque les valeurs sont déjà connues, un initialiseur entre accolades permet de déclarer et d’initialiser un tableau dans une seule instruction : int[] scores = {18, 24, 31};. Java déduit la longueur du nombre de valeurs et les stocke dans l’ordre aux indices 0, 1 et 2. Cette forme concise s’emploie avec la déclaration. Si la variable a été déclarée auparavant, utilisez une expression explicite de création de tableau pour lui affecter des valeurs ensuite : scores = new int[] {18, 24, 31};. Une simple liste entre accolades, telle que scores = {18, 24, 31};, n’est pas valide comme affectation autonome.

La forme explicite clarifie aussi la création lorsqu’un initialiseur figure dans une expression plus longue. Choisissez la forme adaptée selon que la déclaration et l’affectation ont lieu ensemble ou séparément ; toutes deux créent un tableau dont la longueur correspond au nombre de valeurs fournies. Pour un tableau numérique créé avec une longueur mais sans valeurs fournies, Java attribue à chaque élément la valeur par défaut de son type. Par exemple, un élément int vaut par défaut 0, un élément boolean false et un élément de type référence null. Ces valeurs par défaut s’appliquent aux éléments d’un tableau, pas à une variable locale non initialisée à laquelle aucun tableau n’a encore été affecté.

Créer des tableaux à partir d’un IntStream

IntStream permet de produire un int[] lorsque les valeurs proviennent d’une séquence ou d’une liste de nombres choisis. Importez-le depuis java.util.stream.IntStream. Pour obtenir une séquence de nombres consécutifs, IntStream.range(0, 5).toArray() renvoie {0, 1, 2, 3, 4}. La borne de départ est incluse et celle de fin exclue ; lorsque la première est inférieure à la seconde, le nombre de valeurs produites correspond à leur différence. toArray consomme le flux et renvoie un tableau d’entiers primitifs.

Pour obtenir des valeurs précises, utilisez IntStream.of(2, 5, 3, 8).toArray(). Cette méthode conserve l’ordre des valeurs et renvoie un int[] ; elle ne les trie pas et ne supprime pas les doublons. Affectez l’une ou l’autre expression à une variable déclarée comme int[], par exemple int[] sequence = IntStream.range(0, 5).toArray();. Cette approche est utile lorsqu’une expression de flux décrit déjà comment obtenir les valeurs. Pour une courte liste fixe, un initialiseur entre accolades est souvent plus facile à lire. Ces exemples décrivent des API Java sans avancer de version de Java.

Déclarer un tableau à deux dimensions

En Java, un tableau à deux dimensions est un tableau dont les éléments sont eux-mêmes des tableaux. La déclaration int[][] grid; désigne ce type ; int[][] grid = new int[2][3]; crée aussi un tableau externe contenant deux tableaux de lignes, chacun composé de trois entiers. Pour cette allocation, les deux tailles indiquent le nombre de lignes et le nombre d’éléments dans chaque ligne. Chaque élément vaut initialement 0.

Vous pouvez initialiser un tableau rectangulaire avec des accolades imbriquées, comme dans int[][] grid = {{1, 2, 3}, {4, 5, 6}};. Les accolades externes contiennent les lignes, et chaque liste d’accolades interne fournit les valeurs d’une ligne. Pour accéder à un élément, utilisez deux indices, par exemple grid[1][2], qui désigne la troisième valeur de la deuxième ligne. Comme les lignes sont des tableaux distincts, Java autorise aussi des lignes de longueurs différentes. Par exemple, int[][] rows = new int[2][]; crée uniquement le tableau externe ; affectez un tableau à chaque ligne avant d’accéder à ses éléments. Ce modèle de tableau de tableaux explique pourquoi un tableau à deux dimensions n’est pas nécessairement une grille rectangulaire.