HOWTO · Java

Comment initialiser tous les éléments d’un tableau à zéro en Java

Découvrez comment Java initialise les nouveaux tableaux numériques et comment remettre à zéro les éléments d’un tableau existant.

Sur cette page

Lorsqu’un nouveau tableau Java contient un type numérique primitif, ses éléments sont initialisés à zéro : aucune étape supplémentaire n’est nécessaire. Pour remettre à zéro un tableau existant, utilisez Arrays.fill() ou affectez explicitement une valeur à chaque élément. Les tableaux de types référence, comme Integer[], contiennent plutôt des éléments null au départ.
L’initialisation des tableaux est couverte dans le cadre du parcours des données de base du Tutoriel Java.

Initialiser les éléments d’un tableau à zéro avec une boucle for

Une boucle for affecte une valeur à chaque indice d’un tableau existant. Elle commence à l’indice 0 et s’arrête avant numbers.length : chaque élément valide est donc parcouru.

Ce programme Java complet applique les différentes techniques à de petits tableaux et affiche chaque résultat :

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class ArrayInitialization {
  public static void main(String[] args) {
    int[] loopValues = {4, 8, 12};
    for (int i = 0; i < loopValues.length; i++) {
      loopValues[i] = 0;
    }
    System.out.println("for loop: " + Arrays.toString(loopValues));

    int[] filledValues = {4, 8, 12};
    Arrays.fill(filledValues, 0);
    System.out.println("fill: " + Arrays.toString(filledValues));

    List<Integer> repeatedValues = Collections.nCopies(3, 0);
    Integer[] boxedValues = repeatedValues.toArray(new Integer[0]);
    System.out.println("boxed values: " + Arrays.toString(boxedValues));

    int[] numbers = {4, 8, 12};
    int[] oldReference = numbers;
    numbers = new int[numbers.length];
    System.out.println("replacement: " + Arrays.toString(numbers));
    System.out.println("old reference: " + Arrays.toString(oldReference));

    int[] generatedValues = {4, 8, 12};
    Arrays.setAll(generatedValues, index -> 0);
    System.out.println("setAll: " + Arrays.toString(generatedValues));

    int[] newValues = new int[3];
    System.out.println("new array: " + Arrays.toString(newValues));
  }
}

Le programme affiche :

for loop: [0, 0, 0]
fill: [0, 0, 0]
boxed values: [0, 0, 0]
replacement: [0, 0, 0]
old reference: [4, 8, 12]
setAll: [0, 0, 0]
new array: [0, 0, 0]

Initialiser les éléments d’un tableau à zéro avec la méthode fill() en Java

Arrays.fill() écrit la valeur fournie dans chaque élément du tableau. Pour un tableau numérique primitif, Arrays.fill(numbers, 0) remet à zéro le tableau existant directement. Cette méthode propose également des variantes qui remplissent une plage précise, si vous ne souhaitez modifier qu’une partie du tableau.

Initialiser les éléments d’un tableau à zéro avec la méthode nCopies()

Collections.nCopies(length, 0) renvoie une List<Integer> immuable contenant plusieurs fois la même valeur Integer (un entier encapsulé). La conversion avec toArray(new Integer[0]) produit un tableau Integer[] ; elle ne produit pas un int[] et ne remet pas à zéro un tableau primitif existant. Cette approche convient lorsque le résultat souhaité est une liste ou un tableau d’objets Integer, et non lorsque vous voulez modifier le tableau d’origine.

Initialiser les éléments d’un tableau à zéro par réaffectation en Java

L’affectation new int[numbers.length] fait pointer numbers vers un nouveau tableau dont les éléments prennent leurs valeurs par défaut. Toute autre variable qui référence le tableau d’origine continue d’en voir le contenu précédent. La réaffectation remplace une référence ; elle n’efface pas l’ancien tableau pour toutes les variables qui le référencent.

Initialiser les éléments d’un tableau à zéro avec Arrays.setAll()

Arrays.setAll() appelle une fonction génératrice fondée sur l’indice pour chaque élément, puis stocke la valeur générée dans le tableau. Dans l’exemple, index -> 0 affecte la même valeur à chaque indice. Cette méthode est utile lorsque la valeur dépend de l’indice ; Arrays.fill() est plus direct si chaque élément doit recevoir la même constante.

Conclusion

Un nouveau tableau numérique primitif est déjà initialisé avec des zéros. Pour remettre à zéro un tableau existant, Arrays.fill() est une solution directe ; une boucle for rend l’affectation élément par élément explicite, tandis que Arrays.setAll() permet de calculer les valeurs à partir des indices. Collections.nCopies() crée une liste de valeurs encapsulées répétées, alors que la réaffectation crée un nouveau tableau et laisse inchangé l’ancien pour toute autre référence.