Java 7 Grundkurs

Arrays

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Um mehrere gleichartige Werte in eine gemeinsame Datenstruktur zu überführen, benötigen wir Arrays. Sie lernen hier, wie Sie durch Arrays durchiterieren können, sei es mit der klassischen Zählschleife oder mit der erweiterten for-Schleife.
11:16

Transkript

Eine Möglichkeit mehrere gleichartige Werte in eine gemeinsame Datenstruktur zu packen sind Arrays. Wenn wir eine einzelne Variable deklarieren, z.B. Int. x, dann wird im Speicherplatz reserviert, in den genau ein einzelnes Int. hineinpasst und über x können wir auf diesen Speicher zugreifen. Setze ich nun bspw. x auf 5, dann wird diese 5 in diesen Speicherbereich geschrieben. Eine solche Variable kann zu einem gebenden Zeitpunkt also immer genau einen Wert aufnehmen. Möchte ich mir mehrere Werte merken, dann brauche ich mehrere Variablen. Eine Alternative besteht darin, quasi mehrere solche Speicherbereiche unter einem gemeinsamen Namen zusammenzufassen. Das sind dann die Arrays. Die Erzeugung eines solchen Arrays erfolgt in zwei Schritten. Als Typ geben wir den Typ an, den die Elemente des Arrays haben sollen, danach folgen eckige Klammer auf, eckige Klammer zu und dann der Name, über den wir das Array ansprechen möchten. Auf diese Weise wird aber noch nicht das Array selbst erzeugt, sondern nur eine Referenzvariable, mit der wir dann später auf das Array verweisen können. Im zweiten Schritt erzeugen wir nun tatsächlich das Array selbst. Da Arrays Objekte sind, benötigen wir einen "new", um ein solches Array zu erzeugen. Das sieht dann so aus: ich nehme eine Variable und weise ihr eine Referenz zu auf dieses Array, was ich hier gerade erzeugt habe. "New" reserviert den Speicherbereich und dann sage ich, ich hätte gerne Platz für Ints und zwar für drei Stück. Hier in den eckigen Klammern gebe ich also die Zahl an. Die Anzahl der Elemente, die mein Array später haben soll. Bei der Deklaration der Variablen hier oben musste ich noch keine Größe angeben, denn der Referenzvariablen ist es ja prinzipiell egal wie groß das Array ist, auf das sie später verweist. Um dann aber das Array erzeugen zu können, muss "new" wissen, wieviel Platz denn nun benötigt wird und deshalb müssen wir hier die Anzahl der gewünschten Elemente angeben. Ist ein Array einmal erzeugt worden, lässt sich seine Größe nicht mehr ändern. Unser Array kann nun also drei Elemente aufnehmen und zwar drei Ints, nicht mehr und nicht weniger. Diese drei Plätze für unsere drei Ints sind bereits mit 0 vorbelegt, das macht das Array automatisch so. Jedes einzelne Element bekommt den Standardwert für den jeweiligen Datentyp. D.h., bei Zahlen also 0, bei boolean faults und bei Referenzen, wie wir gleich noch sehen werden, "null". Da wir nun nur noch einen Namen für alle Elemente unseres Arrays haben, benötigen wir einen Mechanismus, um sie gezielt getrennt voneinander ansprechen zu können. Den gibt es auch und zwar ist das ein Index. Der Index beginnt bei 0 und über den Index können wir jedes Element einzeln auswählen. Möchte ich bspw. meinem ersten Element, also dem Element mit dem Index 0 die Zahl 42 zuweisen, dann schreibe ich Daten[Index0] und danach der Wert. "Daten" ist meine Referenzvariable und über den Index gebe ich an, welches Element ich ansprechen möchte. Also um ein Array verwenden zu können, brauchen wir drei Schritte. Wir müssen erstens eine Variable deklarieren vom passenden Typ mit den eckigen Klammern dahinter. Dann müssen wir ein Array-Objekt erzeugen, dabei müssen wir die Größe angeben. Und schließlich müssen wir unserer Variablen die Referenz auf das erzeugte Array zuweisen. Wir haben nun gesehen, wie es mit einfachen Datentypen wie Int funktioniert. Schauen wir uns jetzt noch an, wie das aussieht, wenn wir Objekte in unser Array reinpacken möchten. Der Anfang sieht ganz genauso aus. Wir deklarieren uns eine Referenzvariable und wir schreiben davor, von welchem Typ die Elemente sein sollen. Nach dem Typ kommt eckige Klammer auf, eckige Klammer zu. D.h., es wird jetzt hier eine Referenzvariable erzeugt und auf die können wir über diesen Namen zugreifen. Im zweiten Schritt erzeugen wir nun das Array-Objekt selbst. D.h., "new" reserviert wieder den Speicher, hier folgt der Element-Typ und dann in eckigen Klammern die Größe des Arrays. Das, was "new" zurückliefert, nämlich die Referenz auf das erzeugte Array, merken wir uns hier in unserer Referenzvariablen. Auch auf diese Elemente greifen wir über den Index zu und auch hier beginnt er mit 0. Die Elemente des Arrays enthalten nun aber keine fertigen Autos, sondern lediglich Referenzen auf Autos. Da noch keine Auto-Objekte da sind, sind diese Elemente also alle mit "null" vorinitialisiert. Um dort jetzt ein Auto hineinpacken zu können, müssen wir ein Auto-Objekt erzeugen und die Referenz auf das erzeugte Objekt in das entsprechende Element hineinpacken. Das sieht dann z.B. so aus: Autos[0] das ist dieses Stück hier vorne = new Auto (Mimi). D.h., wir rufen hier den Konstruktor auf, übergeben hier einen Wert, wir erzeugen also ganz normal ein Auto-Objekt. Die Referenz darauf packen wir nun in unser Array-Element. Die Referenzvariable "Autos" verweist also auf das ganze Array und das erste Element des Arrays wiederum verweist auf unser Auto-Objekt. Schauen wir uns das Ganze in einem praktischen Beispiel an. Ich habe hier eine Hauptklasse mit einer Main-Methode und darin werden nacheinander zwei Auto-Objekte erzeugt, eins hier und eins hier unten und dann wird mit diesen Objekten ein bisschen was getan. Für jedes dieser Objekte wird jeweils eine eigene Variable angelegt und wenn wir jetzt weitere Auto-Objekte brauchen würden, müssen wir weitere Variablen deklarieren. Das ist natürlich die perfekte Anwendung für ein Array. Deklarieren wir uns also ein Auto-Array: Auto[], nennen wir es "Autos" und jetzt erzeugen wir uns ein Auto-Array mit Platz für zwei Autos. Statt nun die Referenz auf das erste Auto in eine separate Variable zu packen, legen wir sie in das erste Element unseres Arrays, das wäre also Autos[0]. Jetzt gibt es natürlich hier jede Menge Beschwerden, weil die Variable "meinAuto" nicht mehr existiert, an diese Stelle setzen wir jetzt Autos[0]. "Kopieren" und dann "Einfügen". Und hier auch. Für das zweite Auto machen wir das Gleiche. Also auch hier die Variable ersetzen durch einen Array-Bezug. Jetzt nehmen wir Autos[1] und überall wo "deinAuto" steht, setzen wir jetzt diesen Bezug auf Autos[1] hin. Sie sehen, der Zugriff auf ein Array erfolgt genauso wie auf eine ganz normale Variable. Sie können also von einem solchen Element dann Methoden aufrufen wie über eine normale Referenzvariable auch. Arrays sparen uns nun aber nicht einfach nur die Arbeit, uns immer wieder neue Variablen-Namen ausdenken zu müssen, sondern es gibt noch einen anderen Vorteil. Wir können jetzt in einer Schleife durch das Array durchgehen und nacheinander mit jedem Element dasselbe tun. Bspw. könnten wir uns jetzt den Status aller Autos anzeigen lassen. Genau das machen wir jetzt mal. Wir setzen das hier unten drunter, um durch einen Array von ganz vorne nach ganz hinten durchzuzählen, brauchen wir eine Zählschleife. Also nehmen wir die, wir deklarieren uns eine Zählvariable, beginnen bei dem Index 0, das ist der erste Index, dann möchten wir gerne so lange zählen, bis wir am Ende des Arrays angekommen sind und da bietet uns das Array eine kleine Erleichterung, indem wir es nach seiner Größe fragen können. Jedes Array hat nämlich eine Variable, die heißt "length". Die kann man nicht setzen, die kann man nur lesen. Aber die enthält die Größe des Arrays. Und schließlich möchten wir immer ein Element weiter. So, jetzt wollen wir also durchgehen und von jedem den Status ausgeben. D.h., System.out.println("Autos"+i).get(Status); "i" ist unsere Zählvariable, die bei Null anfängt und so lange zählt, wie sie kleiner als die Größe bleibt, in unserem Fall also bis 1. Und über "i" greifen wir also der Reihe nach auf die einzelnen Elemente des Arrays zu. Jetzt können wir diese Zeile hier rausnehmen, in der wir uns ursprünglich den Status haben ausgeben lassen und diese Zeile vom ersten Auto auch. Starten wir mal unsere Anwendung und dann sehen wir hier, Anna fährt gerade 0 km/h, Bernhard fährt auch 0 km/h. Anna hat ja einmal beschleunigt und dann zweimal gebremst und Bernhard hat ganz am Ende angehalten, d. h., alles ist in Ordnung. Grundsätzlich kann man auf diese Weise durch jedes Array durchinterieren. Wir haben jetzt hier noch eine spezielle Situation, weil wir nämlich von ganz vorne bis ganz hinten durch das gesamte Array durchgehen möchten und dabei immer einen Schritt weitergehen. Für diese Situation gibt es eine besondere Art der Vorschleife, die sog. erweiterte Vorschleife. Ich setze die jetzt mal hier drunter, damit Sie den Vergleich sehen können. Das Schlüsselwort heißt ebenfalls "for", aber in den runden Klammern kommen jetzt nicht drei Teile, getrennt durch ein Semikolon, sondern zwei Teile, getrennt durch einen Doppelpunkt. Ich setze mal den Doppelpunkt schon hin. Auf der rechten Seite des Doppelpunktes steht das Array, durch das wir durchinterieren möchten, also "Autos". Auf der linken Seite deklarieren wir uns jetzt eine Variable vom Typ eines Elementes dieses Arrays. In unserem Fall also "Auto". Wie nennen wir diese Variable? Nennen wir sie "Auto", denn sie soll ja auf ein einzelnes Auto verweisen könnne. Das Ganze liest sich jetzt am besten folgendermaßen: Für alle Auto-Objekte in Autos mache folgendes, gib aus "Auto" das ist dieses Auto hier, was wir hier eben deklariert haben .get(Status). Mit dieser erweiterten Vorschleife wird nun also durch das gesamte Array durchgegangen. Es werden der Reihe nach dieser Variablen "Auto" die einzelnen Elemente des Arrays zugewiesen. Und dann können wir also über diese Variable hier auf die einzelnen Elemente der Reihe nach zugreifen. Diese erweiterte Vorschleife hat drei wesentliche Eigenschaften. Die erste ist, wir gehen immer durch das gesamte Array durch. Von ganz vorne bis ganz hinten. Die zweite Eigenschaft: wir haben keinen Zugriff auf den Index. Hier oben könnten wir ja so was schreiben wie "Das erste Auto ist..., das zweite Auto..." usw. Das können wir hier unten nicht. Und schließlich diese Variante hier unten ist in der Regel besser lesbar als die Variante hier oben mit Zählvariable. Man muss bei der oberen Variante immer nochmal genau hinschauen: fangen wir wirklich ganz vorn an, gehen wir wirklich bis ganz hinten und gehen wir wirklich immer nur einen Schritt weiter? Hier unten stehen diese Fragen gar nicht erst. Nun haben Sie also gesehen, was Arrays sind. Wie Sie sie verwenden können, um mehrere Werte unter einem gemeinsamen Namen anzusprechen und wie Sie durch Arrays durchinterieren können, entweder mit der klassischen Zählschleife oder mit der erweiterten Vorschleife.

Java 7 Grundkurs

Machen Sie sich mit den Grundlagen der Java-Programmierung vertraut und lernen Sie die Syntax der Sprache sowie das Konzept der objektorientierten Softwareentwicklung kennen.

8 Std. 32 min (66 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!