Tech Archive Help

08 Java – Arrays

Ein Array ist eine Art Container eines Datentyps, in dessen Inhalt eine feste Anzahl von Elementen passt. Die Größe des Arrays muss am Anfang festgelegt werden – entweder durch den Entwickler selbst oder durch den Compiler. Da Arrays statisch sind, kann die Größe danach auch nicht mehr geändert werden. Zudem können sie aus jeder Art von Objekten gebildet werden.

Struktur

Type[] identifier = new Type[];

Folgendes Beispiel deklariert ein int[] und wird mit einer Größe von 5 initialisiert.

int[] array1 = new int[5]; int[] array2; array2 = new int[5];

Wird das Array direkt mit Werten initialisiert, übernimmt der Compiler die Aufgabe die richtige Größe des Arrays anzulegen.

int[] nums = new int[]{4, 6, 2, 5, 7};

Auch eine verkürzte Schreibweise ist möglich.

int[] nums = {4, 6, 2, 5, 7};

Indizes

In vielen Programmiersprachen beginnen Indizes aus historischen und praktischen Gründen bei 0 statt bei 1. Diese Konvention hat sich im Laufe der Zeit etabliert und bietet einige Vorteile. Die Werte innerhalb eines Arrays werden über die Positionen (Indizes) referenziert.

Welcher Wert wird beim folgenden Beispiel auf der Konsole ausgegeben?

int[] array = new int[]{4, 6, 2, 5, 7}; System.out.println(array[3]);
// 0 1 2 3 4 int[] array = new int[]{4, 6, 2, 5, 7}; System.out.println(array[3]); // 5

Die Zahl die in den eckigen Klammern angegeben wird, bezieht sich auf den Index – also die Position auf dem sich der Wert befindet.

Elemente einfügen und auslesen

int[] nums = new int[10]; // Insert elements nums[0] = 3; nums[1] = 6; nums[2] = 4; nums[3] = 5; // Read elements int i = nums[0]; int j = nums[1]; int k = nums[2]; int l = nums[3];

Iteration

Jeden Wert einzeln aus einem Array zu lesen strengt an und lässt den Code im Museum der Spaghetti-Codes erstrahlen. Wir wissen bereits, wie Schleifen funktionieren. Nutzen wir eine, die das gesamte Array auf der Konsole ausgibt. Mit nums.length können wir die Größe des Arrays abfragen.

for (int i = 0; i < nums.length; i++) { System.out.print(nums[i] + " "); }
3 6 4 5 0 0 0 0 0 0

Unser Array wurde mit einer Größe von 10 initialisiert. Da wir nur 4 Werte hinzugefügt haben, bleiben 6 frei Plätze. Java initialisiert standardmäßig leere numerische Arrays mit 0, booleans mit false und Objekte mit null.

Und ein char[]-Array?

Das \u0000-Zeichen ist das Nullzeichen und entspricht in der ASCII- und Unicode-Tabelle dem Zeichen mit dem Wert 0. Es wird oft als NUL oder null character bezeichnet

Viele Entwicklungsumgebungen und Texteditoren haben spezielle Darstellungen für Zeichen, die normalerweise unsichtbar sind, wie das Nullzeichen (\u0000). Diese Darstellung kann je nach Umgebung variieren.

In IntelliJ IDEA wird das Nullzeichen oft als ein kleines Rechteck mit einer diagonalen Linie dargestellt, um den Entwickler darauf hinzuweisen, dass es sich um ein unsichtbares oder nicht druckbares Zeichen handelt.

Mehrdimensionale Arrays

Arrays lassen sich mehrdimensional darstellen. Tatsächlich verwaltet Java jedoch keine echten mehrdimensionalen Arrays, sondern Arrays von Arrays (von Arrays …). Um ein mehrdimensionales Array anzulegen, muss ein weiteres Paar Klammern hinzugefügt werden – ein paar Klammern pro Dimension. Die folgenden Beispiele beinhaltet 2 Zeilen und 3 Spalten.

int[][] array = new int[2][3];
int[][] array = { {3, 6, 4}, {3, 2, 1} };

Beispiele für die Ausgabe des zweidimensionalen Arrays

for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[i].length; j++) { System.out.print(array[i][j]); } System.out.println(); }
for (int[] i : array) { for (int j : i) { System.out.print(j); } System.out.println(); }

Zu beachten ist, dass bei der zweiten Variante die Schleifenvariable i den Typ int[] aufweist. Jedes Element, dass diese Schleifenvariable durchläuft, ist also selbst ein Array.

Konsolenausgabe in beiden Fällen:

000 000
Last modified: 19 August 2024