Arrays AnPr Name 1 Klasse Datum Allgemeines Arrays sind in Java sogenannte„statische Felder“ bezeichnet. Statische Felder sind zusammengesetzte Datentypen, deren Länge initial (bei der Deklaration) festgelegt wird, danach jedoch nicht mehr geändert werden kann. Im Gegensatz zu statischen Feldern gibt es dynamische Felder, welche jederzeit vergrößert, oder verkleinert werden können. In Java würde man hier bspw. ArrayList Objekte verwenden. 2 Aufbau eines Arrays Es gibt Situationen, bei denen die unstrukturierten Datentypen für die Programmierung nicht ausreichend sind. Wenn beispielsweise eine Liste von Teilnehmern, oder die Belegung eines Schachfeldes gespeichert werden muss, bieten nur die strukturierten Datentypen wie Arrays eine Lösung. Ein Array ist eine Liste von Werten, welche über einen einzigen Variablennamen und einem Index angesprochen werden kann. Hier ein Beispiel eines Arrays mit 4 Characterwerten: Die Position – eigentlich Idexposition ist eine Art Adresse, um an den entsprechenden Wert zu gelangen. Wichtig zu wissen ist, dass die erste Indexposition die 0 ist! Wenn ein Array also die Länge 4 aufweist, dann ist die höchste Indexposition die 3. Es gibt auch mehrdimmensionale Arrays, wobei jedes Element somit mehrere Adresselemente aufweist. Bspw. hat im untenstehenden Array das Feld, welches den Wert ‚x‘ aufweist, die Indexpositionen [1][2] – also zwei Werte, da es sich um ein zweidimmensionales Array handelt. 3 Erzeugen eines Arrays Nachdem Arrays eine Liste von Werten darstellt, muss man sich zuerst überlegen, welcher Datentyp die Werte darstellen. Es ist grundsätzlich möglich, von jedem, in Java unterstützten Datentyp ein Array zu deklarieren (egal ob einfache Datentypen wie int, oder auch zusammengesetzte Datentypen wie String). In Java gibt es zwei Methoden ein Array zu erzeugen. Entweder mit vordefinierten Werten, oder ohne Belegung. Vordefinierte Werte wählt man im Regelfall, wenn man Konstanten als Array festlegen möchte. Hier zuerst die Option, ein Array mit vordefinierten Werten zu erzeugen: int[] iaMyArray = {1,2,3,4,5}; Die beiden eckigen Klammern zeigen Java an, dass es sich um ein Array handelt. Da die Klammern nach dem Datentyp int kommen, handelt es sich somit um ein integer Array. Anschließend kommt, wie bei allen anderen Deklaration, der Arraname. Die Initialisierung ist eine Zuweisung einer Datenmenge, welche in geschweiften Klammern, getrennt durch Kommas festgelegt ist. Um nun zu prüfen, ob die Werte tatsächlich vorhanden sind, können Sie nun lesend auf die Werte zugreifen: System.out.println(iaMyArray[2]); AnPr_Arrays_v01.docx Seite 1 Arrays AnPr Die Deklaration ohne vordefinierte Werte sieht wie folgt aus: int[]iaMyArray = new int[4]; Da die Werte nicht festgelegt werden, muss nun auf eine andere Art festgelegt werden, wie viele Einträge das Array aufnehmen kann. Dazu wird mit dem Schlüsselwort „new“ ein neues Objekt erzeugt. Die Eigenschaften des Objektes folgen nach „new“ in der Form, dass der Datentyp wiederholt wird und in den eckigen Klammern die Arraygröße eingetragen wird. Aufgabe: Erzeugen Sie jeweils ein Array ohne Vorbelegung mit den unten stehenden Datentypen. Prüfen Sie anschließend, welche initialen Werte in dem Array vorliegen (mit System.out.println()), also welche Werte das System automatisch einträgt: Datentyp: Initwert int char double boolean String Mehrdimensionale Arrays werden entsprechend erzeugt. Hier ein Beispiel für eine Vorbelegung: int[][] iaMyArray = { {1,2,3,4,5}, {10, 20, 30, 40, 50}, {100, 200, 300, 400, 500} }; Die Datenmengen werden über verschachtelte geschweifte Klammern erzeugt. Wichtig bei einem mehrdimensionalen Array ist, dass die Anzahl der Dimensionen über die Anzahl der eckigen Klammern festgelegt wird. Bei einer Arraydeklaration ohne Vorbelegung ist der Syntax wie folgt: int[][] iaMyArray = new int[2][4]; Hinweis: Bei mehrdimensionalen Arrays ist die allgemeine Dimmension immer vorne, die spezielleren immer hinten. Beispiel: String[][] saPerson = { {"Peter", "Müller"}, {"Petra", "Maier"}, {"Klaus", "Kleber"}, {"Gundula", "Gause"} }; Hier ist die erste Dimension die Personen, die zweite Dimension die Vor/Nachnamendimesion. Eine Anfrage bezüglich der Personenanzahl wäre somit: System.out.println(saPerson.length); Es kommt somit die 4 raus. Hätte man die Dimensionen umgedreht, so käme immer die 2 raus, egal wie viele Personen in das Array eingetragen sind, da für jede Person ein Vorname und ein Nachname (also 2 Einträge) vorgesehen ist. Seite 2 AnPr 4 Arrays Auslesen / Eintragen der Werte Mit Arrays kann man genauso arbeiten, wie mit „normalen“ Variablen. Der einzige Unterschied ist, dass man neben der Arrayvariablen noch die Indexposition mit angeben muss. Danach kann sowohl lesend, als auch schreibend auf die Werte zugegriffen werden: int[]iaMyArray = new int[3]; iaMyArray[0] = 5; // schreibender Zugriff System.out.println(iaMyArray[0]); // lesender Zugriff Oftmals gibt es die Notwendigkeit, ein ganzes Array auszugeben. Hier greift man sinnvollerweise auf Schleifen zurück: int[] myArray = {1,2,3,4,5}; for (int = 0; i < myArray.length; i++) { System.out.println(myArray[i]); } Anmerkung: Für das Auslesen einfacher Arrays wurde in Java auch eine Kurzform von Schleifen realisiert, welche auf die Zählvariable verzichtet und pro Durchlauf den Wert in eine „Arbeitsvariable“ schreibt: int[]iaMyArray = {1,2,3,4,5}; for (int iValue : iaMyArray) { System.out.println(iValue); } Bei einem Mehrdimmensionalen Array müssen entsprechend zwei Schleifen umgesetzt werden: int[][] myArray = {{1,2,3,4,5}, {6,7,8,9,10}}; for (int i = 0; i < myArray.length; i++) { for (int j = 0; j < myArray[i].length; j++) { System.out.println(myArray[i][j]); } } Seite 3 Arrays 5 AnPr Lizenz Diese(s) Werk bzw. Inhalt von Maik Aicher (www.codeconcert.de) steht unter einer Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz. Seite 4