CodeGym /Java-Blog /Germany /Arrays in Java
Autor
Oleksandr Miadelets
Head of Developers Team at CodeGym

Arrays in Java

Veröffentlicht in der Gruppe Germany
Stell dir die Schränke in einem Lagerraum vor. Jeder von ihnen hat seine eigene Nummer und jeder von ihnen enthält ein Gepäckstück. Oder eine Weinkarte, auf der jede Weinsorte nummeriert ist und du die Nummer deines Getränks angibst. Oder eine Liste von Schülern, in der „Adams“ an erster und „Zimmer“ an letzter Stelle steht. Oder eine Liste von Passagieren in einem Flugzeug, denen jeweils ein nummerierter Sitzplatz zugewiesen ist. In Java werden häufig Arrays verwendet, um mit solchen Strukturen zu arbeiten, d. h. mit Mengen homogener Daten.

Arrays im CodeGym-Kurs

Bei CodeGym beginnst du auf Level 7 der Java-Syntax-Quest mit Arrays zu arbeiten. Drei Lektionen sind ihnen gewidmet, ebenso wie 8 Aufgaben auf verschiedenen Niveaus, um deine Kompetenz im Umgang mit Arrays zu festigen. Aber du wirst im Laufe des Kurses sehr oft auf Arrays stoßen (insbesondere die Array-Klasse wird in der Quest Java Collections und als Teil deiner zukünftigen Arbeit behandelt).

Was ist ein Array?

Ein Array ist eine Datenstruktur, die Elemente desselben Typs speichert. Du kannst es dir als eine Reihe von nummerierten Zellen vorstellen. In jeder Zelle kannst du Daten ablegen (ein Datenelement pro Zelle). Auf eine bestimmte Zelle wird über deren Nummer zugegriffen. Die Nummer eines Elements im Array wird auch als Index bezeichnet. In Java ist ein Array homogen, d. h. alle seine Zellen enthalten Elemente desselben Typs. Ein Array mit ganzen Zahlen enthält also nur ganze Zahlen (int), ein Array mit Strings nur Strings und ein Array mit Instanzen der von uns erstellten Klasse Dog enthält nur Dog-Objekte. Mit anderen Worten: Java lässt es nicht zu, dass wir eine ganze Zahl in die erste Zelle des Arrays schreiben, einen String in die zweite und eine Dog-Objekt in die dritte. Arrays in Java - 1

Ein Array deklarieren

Wie deklariert man ein Array?

Wie jede Variable muss auch ein Array in Java deklariert werden. Es gibt zwei Möglichkeiten, dies zu tun. Sie sind gleichwertig, aber die erste Methode entspricht eher dem Java-Stil. Die zweite ist ein Erbe der Sprache C: Viele C-Programmierer sind zu Java gewechselt, und eine alternative Methode wurde für sie beibehalten. Die Tabelle zeigt beide Möglichkeiten, ein Array in Java zu deklarieren:
Nr. Array deklarieren, Java-Syntax Beispiele Kommentar
1.

dataType[] arrayName;

int[] myArray;

Object[]
arrayOfObjects;
Ein Array sollte auf diese Weise deklariert werden. Das ist Java-Stil.
2.

dataType arrayName[];

int myArray[];

Object
arrayOfObjects[];
Array-Deklarationsmethode geerbt von C/C++, funktioniert in Java
In beiden Fällen ist dataType der Typ der Variablen im Array. In den Beispielen haben wir zwei Arrays deklariert. Das eine speichert int-Werte, das andere Object-Objekte. Eine Array-Deklaration hat also einen Namen und einen Typ (den Typ der Elemente des Arrays). ArrayName ist der Name des Arrays.

Ein Array erstellen

Wie erstellt man ein Array?

Wie jedes andere Objekt kannst du auch ein Java-Array erstellen, d. h. einen Platz im Speicher dafür reservieren, indem du den new-Operator verwendest. So wird's gemacht:

new typeOfArray[length];
Dabei ist typeOfArray der Typ des Arrays und length seine Länge (d. h. die Anzahl der Zellen), ausgedrückt als ganze Zahl (int). Beachte aber, dass wir hier nur Speicher für das Array zugewiesen haben – wir haben das deklarierte Array nicht mit einer zuvor deklarierten Variablen verknüpft. Normalerweise wird ein Array erst deklariert und dann instanziiert, zum Beispiel:

int[] myArray; // Array-Deklaration
myArray = new int[10]; // Array mit 10 int-Werten erstellen (Speicher reservieren)
Hier haben wir ein Array mit ganzen Zahlen namens myArray erstellt und dem Compiler mitgeteilt, dass es aus 10 Zellen besteht (von denen jede einen int-Wert enthält). Es ist jedoch wesentlich gebräuchlicher, die folgende abgekürzte Syntax zu verwenden, um ein Array sofort zu erstellen, wenn es deklariert wird:

int[] myArray = new int [10]; // Deklaration des Arrays und Speicherzuweisung in einem Schritt
Bitte beachte: Nachdem ein Array mit dem new-Operator erstellt wurde, enthalten seine Zellen Standardwerte. Bei numerischen Typen (wie in unserem Beispiel) ist der Standardwert 0, bei booleschen Typen ist er false und bei Referenztypen ist er null. Nach der Ausführung dieser Anweisung

int[] myArray = new int[10];
erhalten wir ein Array mit zehn int-Werten und bis das Programm die Werte ändert, enthält jede Zelle den Wert 0.

Weitere Informationen über Arrays findest du im Artikel „Something about arrays

Array-Länge in Java

Wie wir bereits erwähnt haben, ist die Länge eines Arrays die Anzahl der Elemente, die das Array aufnehmen kann. Die Länge eines Arrays kann nicht geändert werden, nachdem es erstellt wurde. Bitte beachte, dass die Array-Elemente in Java beginnend bei Null durchnummeriert werden. Wenn wir also ein Array mit 10 Elementen haben, dann ist der Index des ersten Elements 0 und der Index des letzten Elements 9. Arrays in Java - 2Du kannst die Länge des Arrays mit der length-Variable abrufen. So wie hier:

int[] myArray = new int[10]; // Erstelle ein int-Array für 10 Elemente und nenne es myArray
System.out.println(myArray.length); // Die Länge des Arrays anzeigen, d. h. die Anzahl der Elemente, die wir in das Array aufnehmen können  
Ausgabe:
10
Arrays in Java - 3

Initialisierung eines Arrays und Zugriff auf seine Elemente

Jetzt wissen wir, wie man in Java ein Array erstellt. So erhalten wir kein leeres Array, sondern ein Array, das mit Standardwerten gefüllt ist. Bei einem int-Array ist dies zum Beispiel 0, und wenn wir ein Array eines beliebigen Referenztyps haben, ist der Standardwert in jeder Zelle null. Wir greifen auf ein Array-Element über seinen Index zu (z. B. um seinen Wert zu setzen, ihn auf dem Bildschirm anzuzeigen oder eine Operation mit ihm durchzuführen). Die Array-Initialisierung ist der Prozess, bei dem ein Array mit bestimmten Werten gefüllt wird (abgesehen von den Standardwerten). Beispiel: Lass uns ein String-Array für die 4 Jahreszeiten erstellen und es mit den Namen der Jahreszeiten füllen.

String[] seasons = new String[4]; /* Deklaration und Erstellung eines Arrays. Java weist Speicher für ein Array mit 4 Strings zu, und jede Zelle wird auf null gesetzt (da String ein Referenztyp ist) */

seasons[0] = "Winter"; /* Wir setzen die erste Zelle, d. h. die Zelle mit dem Index Null, auf "Winter". Hier greifen wir auf das nullte Element des Arrays zu und schreiben einen bestimmten Wert hinein. */
seasons[1] = "Frühling"; // Wir folgen einem ähnlichen Verfahren für die Zelle mit dem Index 1 (die zweite Zelle)
seasons[2] = "Sommer"; // ... Index 2
seasons[3] = "Herbst"; // und schließlich mit Index 3
Jetzt werden die Namen der Jahreszeiten in die vier Zellen unseres Arrays geschrieben. Wir könnten das Array auf eine andere Art und Weise initialisieren, indem wir die Deklaration und die Initialisierung kombinieren:

String[] seasons = new String[] {"Winter", "Frühling", "Sommer", "Herbst"};
Außerdem kann der new-Operator weggelassen werden:

String[] seasons = {"Winter", "Frühling", "Sommer", "Herbst"};

Wie zeigt man in Java ein Array auf dem Bildschirm an?

Du kannst Array-Elemente auf dem Bildschirm (d. h. auf der Konsole) anzeigen, indem du eine for-Schleife verwendest. Eine andere, kürzere Möglichkeit, ein Array anzuzeigen, wird im Abschnitt „Nützliche Methoden für die Arbeit mit Arrays“ behandelt. Sieh dir in der Zwischenzeit dieses Beispiel an, in dem ein Array mit Hilfe einer Schleife angezeigt wird:

String[] seasons = new String {"Winter", "Frühling", "Sommer", "Herbst"};
for (int i = 0; i < 4; i++) {
System.out.println(seasons[i]);
}
Das Programm erzeugt folgende Ausgabe:
Winter Frühling Sommer Herbst

Eindimensionale und mehrdimensionale Arrays in Java

Aber was ist, wenn wir nicht ein Array von Zahlen, Strings oder anderen Objekten erstellen wollen, sondern ein Array von Arrays? Mit Java kannst du auch das tun. Die Art von Array, mit der wir bereits vertraut sind (int[] myArray = new int[8]) wird eindimensionales Array genannt. Aber ein Array von Arrays wird als zweidimensionales Array bezeichnet. Das ist wie eine Tabelle, die eine Zeilennummer und eine Spaltennummer hat. Wenn du schon die Grundlagen der linearen Algebra gelernt hast, kannst du es dir auch als Matrix vorstellen. Arrays in Java - 4Warum brauchen wir solche Arrays? Naja, um Matrizen und Tabellen zu programmieren, sowie andere Objekte, die eine ähnliche Struktur haben. Ein Schachbrett kann zum Beispiel durch ein 8x8-Array dargestellt werden. Ein mehrdimensionales Array wird wie folgt deklariert und erstellt:

Int[][] myTwoDimentionalArray = new int[8][8];
Dieses Array hat genau 64 Elemente: myTwoDimentionalArray[0][0], myTwoDimentionalArray[0][1], myTwoDimentionalArray[1][0], myTwoDimentionalArray[1][1] und so weiter bis zu myTwoDimentionalArray[8][8]. Wenn wir also ein Schachbrett darstellen wollen, entspricht A1 myTwoDimentionalArray[0][0] und E2 myTwoDimentionalArray[4][1]. Aber wie weit können wir das treiben? In Java kannst du ein Array von Arrays definieren... ein Array von Arrays von Arrays, und so weiter. Dreidimensionale und höherdimensionale Arrays werden natürlich nur sehr selten verwendet. Du könntest aber auch ein dreidimensionales Array verwenden, um z. B. einen Zauberwürfel zu programmieren.

Nützliche Methoden für die Arbeit mit Arrays

Java bietet die Klasse java.util.Arrays für die Arbeit mit Arrays. Die häufigsten Operationen, die mit Arrays durchgeführt werden, sind Initialisierung (Füllen mit Elementen), Abrufen eines Elements (nach Index), Sortieren und Durchsuchen. Das Durchsuchen und Sortieren von Arrays sehen wir uns ein andermal an. Einerseits ist es sicher sinnvoll, verschiedene Such- und Sortieralgorithmen einmal selbst zu schreiben. Andererseits sind die besten Algorithmen bereits implementiert und in den Standard-Java-Bibliotheken enthalten, so dass du sie problemlos nutzen kannst. Hier sehen wir uns nun drei nützliche Methoden in dieser Klasse an.

Sortieren eines Arrays

Die Methode void sort(int[] myArray, int fromIndex, int toIndex) sortiert ein int-Array oder -Teilarray in aufsteigender Reihenfolge.

Suchen nach einem Element in einem Array

int binarySearch(int[] myArray, int fromIndex, int toIndex, int key). Diese Methode sucht nach dem key-Element in einem sortierten myArray-Array oder -Teilarray von fromIndex bis toIndex. Wenn das Element gefunden wird, wird sein Index zurückgegeben. Andernfalls wird (-fromIndex)-1 zurückgegeben.

Umwandeln eines Arrays in eine Zeichenkette

Die Methode String toString(int[] myArray) wandelt ein Array in einen String um. Arrays überschreiben in Java nicht die toString()-Methode. Wenn du also versuchst, ein ganzes Array auf einmal anzuzeigen (System.out.println(myArray)) und nicht nur ein Element nach dem anderen, wie im Abschnitt „Ein Array auf dem Bildschirm anzeigen“ beschrieben, erhältst du den Namen der Klasse und den hexadezimalen Hashwert des Arrays (definiert durch Object.toString()). Wenn du noch Anfänger bist, verstehst du die Erklärung der toString-Methode vielleicht nicht. Dasa musst du am Anfang auch noch nicht, aber mit dieser Methode wird es einfacher, ein Array anzuzeigen. Mit Java kannst du ganz einfach ein Array anzeigen, ohne eine Schleife zu verwenden. Das folgende Beispiel zeigt dies.

Ein Beispiel mit sort, binarySearch und toString

Wir erstellen ein Array von ganzen Zahlen, zeigen es mit toString an, sortieren es mit der sort-Methode und suchen dann eine Zahl darin.

class Main {
    public static void main(String[] args) {
        int[] array = {1, 5, 4, 3, 7}; // Deklariere und initialisiere das Array
        System.out.println(array); // Versuche, unser Array ohne die toString-Methode anzuzeigen – das Ergebnis ist eine Hexadezimalzahl
        System.out.println(Arrays.toString(array)); // Zeige das Array korrekt an
        Arrays.sort(array, 0, 4); // Sortiere das gesamte Array vom nullten bis zum vierten Element
        System.out.println(Arrays.toString(array)); // Zeige das sortierte Array an
        int key = Arrays.binarySearch(array, 5); // Suche nach der Zahl 5 in dem sortierten Array.
        // Die binarySearch-Methode gibt den Index des Array-Elements zurück, nach dem wir suchen
        System.out.println(key); // Zeige den Index der gesuchten Zahl an
System.out.println(Arrays.binarySearch(array, 0)); // Versuche nun, eine Zahl zu finden, die nicht im Array ist,
        // und zeige sofort das Ergebnis an

    }
}
Ausgabe:

[I@1540e19d
[1, 5, 4, 3, 7]
[1, 3, 4, 5, 7]
3
-1
Der erste String ist ein Versuch, das Array anzuzeigen, ohne toString zu verwenden. Der zweite ist das Array, das mit toString angezeigt wird. Der dritte ist das sortierte Array. Der vierte ist der Index der gesuchten Zahl (5) im sortierten Array (denk daran, dass wir von Null aus zählen, der Index des vierten Elements des Arrays ist also 3). Im fünften String sehen wir -1. Das ist ein ungültiger Array-Index. Er signalisiert, dass die gesuchte Zahl (in diesem Fall 0) nicht in dem Array enthalten ist.

Mehr über Methoden in der Array-Klasse

Arrays class and its use – Dieser Artikel beschreibt einige Methoden der Arrays-Klasse. Die Klasse Arrays hat 18 wichtige Methoden für die Arbeit mit Arrays.

Arrays im Überblick

  • Wesentliche Merkmale eines Arrays: der Typ der darin enthaltenen Daten, sein Name und seine Länge.
    Die letzte Eigenschaft wird festgelegt, wenn das Array erstellt wird (wenn der Speicher für das Array zugewiesen wird). Die ersten beiden Eigenschaften werden festgelegt, wenn das Array deklariert wird.

  • Die Array-Größe (Anzahl der Zellen) muss ein int sein.

  • Es ist nicht möglich, die Länge eines Arrays zu ändern, nachdem es erstellt wurde.

  • Auf ein Array-Element kann über seinen Index zugegriffen werden.

  • Elemente in Arrays werden, wie alles andere in Java auch, von Null an nummeriert.

  • Nachdem ein Array erstellt wurde, wird es mit Standardwerten gefüllt.

  • Arrays in Java sind nicht dasselbe wie Arrays in C++. Sie sind fast wie Zeiger auf dynamische Arrays.

Nützliche Materialien über Arrays

Möchtest du mehr über Arrays erfahren? Schau dir die folgenden Artikel an. Es gibt eine Menge interessantes und nützliches Material zu diesem Thema.
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION