HOWTO · Java

Alle Array-Elemente in Java auf Null setzen

Erfahren Sie, wann Java Array-Elemente automatisch auf null setzt und wie Sie ein vorhandenes numerisches Array mit mehreren Methoden auf Null zurücksetzen.

Auf dieser Seite

Ein neu angelegtes Java-Array eines primitiven numerischen Typs enthält standardmäßig Elemente mit dem Wert null. Eine zusätzliche Initialisierung ist daher nicht nötig. Möchten Sie ein vorhandenes Array zurücksetzen, können Sie Arrays.fill() verwenden oder jedem Element ausdrücklich einen Wert zuweisen. Arrays mit Referenztypen wie Integer[] enthalten anfangs dagegen null-Elemente.
Die Array-Initialisierung wird als Teil des Kerndaten-Lernpfads im Java-Tutorial behandelt.

Array-Elemente in Java mit einer for-Schleife auf Null setzen

Eine for-Schleife weist jedem Index eines vorhandenen Arrays einen Wert zu. Sie beginnt beim Index 0 und läuft bis ausschließlich numbers.length; damit wird jedes gültige Element genau einmal berücksichtigt.

Das folgende vollständige Java-Programm zeigt die Methoden anhand kurzer Arrays und gibt die jeweiligen Ergebnisse aus:

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));
  }
}

Das Programm gibt Folgendes aus:

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]

Array-Elemente in Java mit fill() auf Null setzen

Arrays.fill() schreibt den angegebenen Wert in jedes Element des Arrays. Bei einem primitiven numerischen Array setzt Arrays.fill(numbers, 0) das vorhandene Array direkt zurück. Wenn nur ein Teil des Arrays geändert werden soll, können Sie stattdessen eine Überladung verwenden, die einen bestimmten Bereich füllt.

Array-Elemente mit nCopies() auf Null setzen

Collections.nCopies(length, 0) liefert eine unveränderliche List<Integer> mit wiederholten, verpackten Zahlenwerten. Die Umwandlung mit toArray(new Integer[0]) ergibt ein Integer[], aber weder ein int[] noch eine Änderung am vorhandenen primitiven Array. Verwenden Sie diese Methode, wenn Sie eine Liste oder ein Array mit verpackten Werten benötigen; sie ersetzt nicht das Zurücksetzen des ursprünglichen Arrays.

Array-Elemente in Java durch Neuzuweisung auf Null setzen

Mit numbers = new int[numbers.length] verweist numbers anschließend auf ein neues Array, dessen Elemente ihre Standardwerte haben. Andere Variablen, die auf das ursprüngliche Array verweisen, sehen weiterhin dessen bisherige Inhalte. Die Neuzuweisung ändert also eine Referenz, setzt aber nicht das alte Array für alle Verweise darauf zurück.

Array-Elemente mit Arrays.setAll() auf Null setzen

Arrays.setAll() ruft für jedes Element einen Generator auf, der anhand des Indexes einen Wert liefert, und speichert diesen Wert im Array. Im Beispiel weist index -> 0 jedem Index denselben Wert zu. Die Methode eignet sich, wenn der Wert vom Index abhängt; sollen alle Elemente denselben konstanten Wert erhalten, ist Arrays.fill() direkter.

Fazit

Ein neues primitives numerisches Array ist bereits mit Nullen initialisiert. Um ein vorhandenes Array zurückzusetzen, ist Arrays.fill() eine direkte Möglichkeit. Eine for-Schleife macht die Zuweisung für jedes einzelne Element sichtbar, und Arrays.setAll() unterstützt indexabhängige Werte. Collections.nCopies() erstellt wiederholte verpackte Werte in einer Liste. Eine Neuzuweisung erzeugt ein neues Array, während andere Verweise auf das alte Array unverändert bleiben.