Java Basics

Wie initialisiere ich ein Array in Java?

Zuletzt aktualisiert am 21. Oktober 2018 von Michael Lossagk , 9 Min  • 
Wie initialisiere ich ein Array in Java?

1. Initialisierung bei der Deklaration


Arrays können direkt bei der Deklaration initialisiert werden. Dies kann auf verschiedene Arten geschehen was ich in den folgenden Abschnitten beschreiben werde.

1.1 Primitive Typen


Die Initialisierung von Arrays mit primitiven Typen am Beispiel von Integern.

Auf der linken Seite steht immer zuerst der Typ, in diesem Fall int, gefolgt von eckigen Klammern [ ] und dem Variablennamen.

int[] myIntArray;

Die eckigen Klammern sind hierbei ausschlaggebend, dass es sich bei der Deklaration um ein Array handelt.

Ebenso handelt es sich bei folgender Schreibweise um eine gültige Syntax:

int myIntArray[];

jedoch handelt es sich bei der zuerst beschrieben Syntax um die allgemein anerkannte Konvention, weswegen diese auch in den folgenden Beispielen eingehalten wird.

1.1.1 Initialisierung per new int[]


Um das Array zu per int[] zu initialisieren können wir folgendes schreiben:

int[] myIntArray1 = new int[3]; // myIntArray1 = [0, 0, 0]

Hier wird ein Integer Array erzeugt das Platz für 3 Werte (Indizes 0, 1, 2) enthält und initial mit Nullen befüllt wird.

1.1.2 Initialisierung per new int[]{}


Um das Array zu per int[]{} zu initialisieren können wir folgendes schreiben:

int[] myIntArray2 = new int[]{1, 2, 3}; // myIntArray2 = [1, 2, 3]

Hier wird ein Integer Array erzeugt das Platz für 3 Werte (Indizes 0, 1, 2) enthält und initial mit den Werten 1, 2 und 3 befüllt wird. Zu beachten ist, dass im Gegensatz zum vorherigen Beispiel die Größe des Arrays nicht in die eckigen Klammern geschrieben wird. Wenn man die Zahl zusätzlich angeben würde so führte dies zu einem Compiler Fehler, da dies keine korrekte Syntax ist.

1.1.2 Initialisierung per {}


Um das Array zu per {} zu initialisieren können wir folgendes schreiben:

int[] myIntArray3 = {1, 2, 3}; // myIntArray3 = [1, 2, 3]

Hier wird wie im vorherigen Beispiel ein Integer Array erzeugt das Platz für 3 Werte (Indizes 0, 1, 2) enthält und initial mit den Werten 1, 2 und 3 befüllt wird. Zu beachten ist, dass im Gegensatz zum vorherigen Beispiel die explizite Beschreibung mit new int[] weggelassen werden kann, da der Compiler dies aus dem Kontext erkennt und entsprechend verarbeitet.

1.2 Komplexe Typen


Die Initialisierung von Arrays mit komplexen Typen am Beispiel von Strings.
Wie schon bei den Beispielen mit den einfachen Datentypen steht auf der linken Seite immer zuerst der Typ, in diesem Fall String, gefolgt von eckigen Klammern [ ] und dem Variablennamen.

String[] myStringArray;

Die eckigen Klammern sind hierbei ausschlaggebend, dass es sich bei der Deklaration um ein Array handelt. Dies ist ebenso identisch wie bei den Beispielen mit den primitiven Typen.

1.2.1 Initialisierung per new String[]


Um das Array zu per String[] zu initialisieren können wir folgendes schreiben:

String[] myStringArray1 = new String[3]; // myStringArray1 = [null, null, null]

Hier wird ein String Array erzeugt das Platz für 3 Werte (Indizes 0, 1, 2) enthält und initial mit null befüllt wird. Hierbei ist zu beachten, dass dies nicht identisch ist mit dem Integer Beispiel. Bei dem Beispiel mit Integern wurde das Array mit dem Zahlenwert 0 initialisiert, wohingegen bei diesem Beispiel der Java null Wert gesetzt wird.

1.2.2 Initialisierung per new String[]{}


Um das Array zu per String[]{} zu initialisieren können wir folgendes schreiben:

String[] myStringArray2 = new String[]{"a", "b", "c"}; // myStringArray2 = [a, b, c]

Hier wird ein String Array erzeugt das Platz für 3 Werte (Indizes 0, 1, 2) enthält und initial mit den Werten a, b und c befüllt wird. Zu beachten ist, dass im Gegensatz zum vorherigen Beispiel die Größe des Arrays nicht in die eckigen Klammern geschrieben wird. Wenn man die Zahl zusätzlich angeben würde so führte dies zu einem Compiler Fehler, da dies keine korrekte Syntax ist.

1.2.3 Initialisierung per {}


Um das Array zu per {} zu initialisieren können wir folgendes schreiben:

String[] myStringArray3 = {"a", "b", "c"}; // myStringArray3 = [a, b, c]

Hier wird wie im vorherigen Beispiel ein String Array erzeugt das Platz für 3 Werte (Indizes 0, 1, 2) enthält und initial mit den Werten 1, 2 und 3 befüllt wird. Zu beachten ist, dass im Gegensatz zum vorherigen Beispiel die explizite Beschreibung mit new String[] weggelassen werden kann, da der Compiler dies aus dem Kontext erkennt und entsprechend verarbeitet.

2. Initialisierung in einer Schleife


Arrays müssen nicht direkt bei der Deklaration initialisiert werden. Die Initialisierung kann ebenso zu einem späteren Zeitpunkt geschehen, wie zum Beispiel beim Iterieren über eine Schleife, was ich in den folgenden Abschnitten beschreiben werde.

2.1 Primitive Typen


Im folgenden Beispiel wird eine einfache Funktion erstellt, die einen Integer Wert erwartet und darauf ein Array erstellt und dies in einer Schleife befüllt.

public int[] createArrayWithRange(int rangeNumber) {
    int[] range = new int[rangeNumber];

    for (int i = 1; i <= range.length; ++i) {
        range[i - 1] = i;
    }
    return range;
}
// createArrayWithRange(3) -> [1, 2, 3]

Hierbei wird in der Schleife von 1 bis zur angegebenen Länge iteriert und bei jedem Schleifendurchlauf der Wert entsprechend der Schleifenvariablen i gesetzt.

2.2 Komplexe Typen


Beim folgenden Beispiel wird ein String als Parameter erwartet. Von diesem String wird die Länge ermittelt und ein entsprechend großes String Array erstellt. In der Schleife wird über die Länge der Array iteriert und für jeden Buchstaben des übergebenen String ein Eintrag an die entsprechende Stelle im Array geschrieben.

public String[] createArrayWithRange(String str) {
    String[] range = new String[str.length()];

    for (int i = 1; i <= range.length; i++) {
        range[i - 1] = String.valueOf(str.charAt(i-1));
    }
    return range;
}
// createArrayWithRange("Test") -> [T, e, s, t]

Wird beim Aufruf der Funktion der String Test übergeben und gibt man anschließend das von der Funktion zurückgegebene Array wieder aus, so erhält man das folgende Resultat: [T, e, s, t].

3. Initialisierung via Streams


Seit Java 8 gibt es die Möglichkeit Streams zu nutzen. Im folgenden Beispiel wird gezeigt, wie ein Array mithilfe dieser Streams erzeugt werden kann:

public Integer[] createArrayWithStream(int number) {
    Integer[] range = IntStream.range(0, number)
            .mapToObj(i -> new Integer((int) (Math.random() * number + 1)))
            .toArray(Integer[]::new);
    return range;
}

Hierbei wird ein Integer als Übergabeparameter erwartet, welcher die Größe des Arrays bestimmt. Dies geschieht mithilfe des Anweisung IntStream.range(0, number). Im Weiteren wird das Array mit Zufallszahlen befüllt, wobei das Intervall von der übergebenen Größe beschränkt wird. Das bedeutet, wird die Zahl 10 übergeben, so werden Zufallszahlen von 1 bis 10 in das Array geschrieben, wird hingegeben bspw. die Zahl 5 übergeben, so ist die maximale Größe einer Zufallszahl 5, usw. Für das Befüllen des Arrays mit Zufallszahlen sorgt die Funktion mapToObj(i -> new Integer((int) (Math.random() * number + 1))), wobei das i für den Schleifenindex steht und für jedes i eine Zufallszahl erstellt und in einen Integer konvertiert (gecastet) wird new Integer((int) (Math.random() * number + 1)). Die letzte Anweisung fügt das ganze zu einem Integer Array zusammen toArray(Integer[]::new).

4. Zusammenfassung


In diesem Tutorial habe ich einige Möglichkeiten aufgezeigt wie man ein Array in Java initialisieren kann. Hierbei wurde zwischen der Initialisierung direkt bei der Deklaration und zu einem späteren Zeitpunkt unterschieden. Zudem wurde auf die Unterschiede bei der Initialisierung mit simplen und komplexen Datentypen hingewiesen. Zum Schluss wurde ein Ausblick auf die Möglichkeiten der Java Stream API gegeben und wie man diese ebenfalls dafür nutzen kann um ein Array zu initialisieren. Die passenden Code Beispiele findest du in meinem GitLab Repository. Falls du weitere Informationen zum Thema Java und Programmieren erfahren möchtest kann ich dir dieses Buch empfehlen.


Michael Lossagk
Michael Lossagk
Coding Enthusiast
Founder @ TechDiffuse

Vielleicht gefällt dir auch


Share this: