Les tableaux en Java : comment les déclarer et les initialiser ? Guide complet

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : pourquoi cette question tourmente-t-elle même les développeurs Java expérimentés ?

\n\n

Si vous avez déjà cherché sur Google « How do I declare and initialize an array in Java? », vous n'êtes pas seul. Cette question sur Stack Overflow a recueilli des centaines de milliers de vues et continue de croître. Apparemment, qu'y a-t-il de si compliqué ? Mais le diable, comme toujours, se cache dans les détails. Java est un langage à typage strict, et la syntaxe des tableaux peut dérouter un débutant.

\n\n

Dans cet article, nous allons passer en revue toutes les façons possibles de déclarer et d'initialiser des tableaux en Java. Vous apprendrez en quoi int[] arr diffère de int arr[], comment créer correctement des tableaux d'objets, et comment éviter le piège du NullPointerException. C'est parti !

\n\n

1. Les bases : qu'est-ce qu'un tableau en Java ?

\n\n

Un tableau en Java est un conteneur qui stocke un nombre fixe d'éléments du même type. Contrairement à Python ou JavaScript, où les tableaux peuvent être dynamiques, en Java, la taille du tableau est définie lors de sa création et ne peut pas être modifiée.

\n\n
int[] numbers; // déclaration (declaration)\nnumbers = new int[5]; // initialisation (initialization) — allocation de mémoire pour 5 éléments\n
\n\n

Dans la première ligne, nous disons au compilateur : « Je veux créer une variable qui référencera un tableau d'entiers ». Dans la seconde, nous allouons de la mémoire pour 5 éléments. Ce n'est qu'après cela que le tableau est prêt à être utilisé.

\n\n

2. Façons de déclarer un tableau

\n\n

En Java, il existe deux syntaxes pour déclarer un tableau. Les deux sont valides, mais la communauté Java (et les normes de codage officielles d'Oracle) recommande la première option.

\n\n

Méthode 1 : type de données + crochets avant le nom de la variable

\n
int[] myArray;\nString[] names;\ndouble[] prices;\n
\n\n

Méthode 2 : crochets après le nom de la variable (style C/C++)

\n
int myArray[];\nString names[];\ndouble prices[];\n
\n\n

Laquelle choisir ? La première option se lit plus naturellement : int[] myArray — « tableau d'entiers nommé myArray ». La deuxième option peut prêter à confusion, surtout lorsque vous déclarez plusieurs variables sur une seule ligne :

\n\n
int[] arr1, arr2; // les deux variables sont des tableaux\nint arr3[], arr4; // arr3 est un tableau, arr4 est un entier ordinaire (erreur !)\n
\n\n

Par conséquent, utilisez toujours type[] nom.

\n\n

3. Initialisation d'un tableau : 4 méthodes éprouvées

\n\n

Après la déclaration, le tableau doit être initialisé. Voici comment faire correctement.

\n\n

Méthode 1 : Création d'un tableau vide avec indication de la taille

\n
int[] numbers = new int[10]; // tableau de 10 éléments, tous égaux à 0 (par défaut)\nString[] words = new String[5]; // tableau de 5 chaînes, toutes égales à null\n
\n\n

Cette méthode convient si vous prévoyez de remplir le tableau plus tard (par exemple, dans une boucle). Il est important de se rappeler : pour les types numériques, les valeurs par défaut sont 0, pour boolean — false, pour les types de référence — null.

\n\n

Méthode 2 : Initialisation avec un littéral de tableau

\n
int[] numbers = {1, 2, 3, 4, 5};\nString[] fruits = {"pomme", "banane", "orange"};\n
\n\n

C'est la manière la plus courte et la plus pratique lorsque vous connaissez tous les éléments à l'avance. Notez : cette syntaxe fonctionne uniquement lors de la déclaration.

\n\n

Méthode 3 : Tableau anonyme (sans nom de variable)

\n
int[] numbers = new int[]{1, 2, 3, 4, 5};\n
\n\n

Cette variante est utile lorsque vous devez passer un tableau à une méthode sans créer de variable séparée :

\n\n
printArray(new int[]{10, 20, 30});\n
\n\n

Méthode 4 : Initialisation via une boucle

\n
int[] squares = new int[10];\nfor (int i = 0; i < squares.length; i++) {\n    squares[i] = (i + 1) * (i + 1);\n}\n
\n\n

Idéal pour un remplissage dynamique, par exemple, le calcul de valeurs ou la lecture de données à partir d'un fichier.

\n\n

4

Blogs

Book Recommendations