Introduction : pourquoi cette question tourmente-t-elle même les développeurs Java expérimentés ?
\n\nSi 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\nDans 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 !
1. Les bases : qu'est-ce qu'un tableau en Java ?
\n\nUn 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\nint[] numbers; // déclaration (declaration)\nnumbers = new int[5]; // initialisation (initialization) — allocation de mémoire pour 5 éléments\n\n\nDans 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\n2. Façons de déclarer un tableau
\n\nEn 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\nMéthode 1 : type de données + crochets avant le nom de la variable
\nint[] myArray;\nString[] names;\ndouble[] prices;\n\n\nMéthode 2 : crochets après le nom de la variable (style C/C++)
\nint myArray[];\nString names[];\ndouble prices[];\n\n\nLaquelle 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 :
int[] arr1, arr2; // les deux variables sont des tableaux\nint arr3[], arr4; // arr3 est un tableau, arr4 est un entier ordinaire (erreur !)\n\n\nPar conséquent, utilisez toujours type[] nom.
3. Initialisation d'un tableau : 4 méthodes éprouvées
\n\nAprès la déclaration, le tableau doit être initialisé. Voici comment faire correctement.
\n\nMéthode 1 : Création d'un tableau vide avec indication de la taille
\nint[] 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\nCette 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.
Méthode 2 : Initialisation avec un littéral de tableau
\nint[] numbers = {1, 2, 3, 4, 5};\nString[] fruits = {"pomme", "banane", "orange"};\n\n\nC'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\nMéthode 3 : Tableau anonyme (sans nom de variable)
\nint[] numbers = new int[]{1, 2, 3, 4, 5};\n\n\nCette variante est utile lorsque vous devez passer un tableau à une méthode sans créer de variable séparée :
\n\nprintArray(new int[]{10, 20, 30});\n\n\nMéthode 4 : Initialisation via une boucle
\nint[] squares = new int[10];\nfor (int i = 0; i < squares.length; i++) {\n squares[i] = (i + 1) * (i + 1);\n}\n\n\nIdéal pour un remplissage dynamique, par exemple, le calcul de valeurs ou la lecture de données à partir d'un fichier.
\n\n