From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001
From: Sven Eisenhauer
+Arrays in Java unterscheiden sich dadurch von Arrays in anderen Programmiersprachen,
+dass sie Objekte sind. Obwohl dieser Umstand in vielen Fällen
+vernachlässigt werden kann, bedeutet er dennoch:
+
+
+Dennoch bleibt ein Array immer eine (möglicherweise mehrdimensionale)
+Reihung von Elementen eines festen Grundtyps. Arrays in Java sind
+semi-dynamisch, d.h. ihre Größe kann zur Laufzeit
+festgelegt, später aber nicht mehr verändert werden.
+Die Deklaration eines Arrays in Java erfolgt in zwei Schritten:
+
+Die Deklaration eines Arrays entspricht syntaktisch der einer einfachen
+Variablen, mit dem Unterschied, dass an den Typnamen eckige Klammern
+angehängt werden:
+
+
+
+
+
+
+ Titel
+ Inhalt
+ Suchen
+ Index
+ DOC
+ Handbuch der Java-Programmierung, 5. Auflage
+
+ <<
+ <
+ >
+ >>
+ API
+ Kapitel 4 - Datentypen
+
+
+
+
+
+4.4 Arrays
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+![]()
+
+
+
+![]()
+
+
+
+
+
+ Hinweis
+
+
4.4.1 Deklaration und Initialisierung
+
+
+
+
+
+
+
+Listing 4.4: Deklaration von Arrays
+
+
+
+
+
+001 int[] a;
+002 double[] b;
+003 boolean[] c;
+
+
+
![]() |
+
+
+ +Wahlweise können die eckigen Klammern auch hinter den Variablennamen +geschrieben werden, aber das ist ein Tribut an die Kompatibilität +zu C/C++ und sollte in neuen Java-Programmen vermieden werden. |
+
+
|
+![]() |
+
+Zum Zeitpunkt der Deklaration wird noch nicht festgelegt, wie viele +Elemente das Array haben soll. Dies geschieht erst später bei +seiner Initialisierung, die mit Hilfe des new-Operators +oder durch Zuweisung eines Array-Literals ausgeführt wird. Sollen +also beispielsweise die oben deklarierten Arrays 5, 10 und 15 Elemente +haben, würden wir das Beispiel wie folgt erweitern: + + +
+
+
++001 a = new int[5]; +002 b = new double[10]; +003 c = new boolean[15];+ + |
+
+Ist bereits zum Deklarationszeitpunkt klar, wie viele Elemente das +Array haben soll, können Deklaration und Initialisierung zusammen +geschrieben werden: + + +
+
+
++001 int[] a = new int[5]; +002 double[] b = new double[10]; +003 boolean[] c = new boolean[15];+ + |
+
+Alternativ zur Verwendung des new-Operators +kann ein Array auch literal initialisiert werden. +Dazu werden die Elemente des Arrays in geschweifte Klammern gesetzt +und nach einem Zuweisungsoperator zur Initialisierung verwendet. Die +Größe des Arrays ergibt sich aus der Anzahl der zugewiesenen +Elemente: + + +
+
+
+
+001 int[] x = {1,2,3,4,5};
+002 boolean[] y = {true, true};
+
+ |
+
+Das Beispiel generiert ein int-Array +x mit fünf Elementen und +ein boolean-Array +y mit zwei Elementen. Anders +als bei der expliziten Initialisierung mit new +muss die Initialisierung in diesem Fall unmittelbar bei der Deklaration +erfolgen. + + + + +
+Bei der Initialisierung eines Arrays von n +Elementen werden die einzelnen Elemente von 0 +bis n-1 durchnummeriert. Der +Zugriff auf jedes einzelne Element erfolgt über seinen numerischen +Index, der nach dem Array-Namen in eckigen Klammern geschrieben wird. +Das nachfolgende Beispiel deklariert zwei Arrays mit Elementen des +Typs int +bzw. boolean, +die dann ausgegeben werden: + + +
+
+
+
+001 /* Listing0408.java */
+002
+003 public class Listing0408
+004 {
+005 public static void main(String[] args)
+006 {
+007 int[] prim = new int[5];
+008 boolean[] b = {true,false};
+009 prim[0] = 2;
+010 prim[1] = 3;
+011 prim[2] = 5;
+012 prim[3] = 7;
+013 prim[4] = 11;
+014
+015 System.out.println("prim hat "+prim.length+" Elemente");
+016 System.out.println("b hat "+b.length+" Elemente");
+017 System.out.println(prim[0]);
+018 System.out.println(prim[1]);
+019 System.out.println(prim[2]);
+020 System.out.println(prim[3]);
+021 System.out.println(prim[4]);
+022 System.out.println(b[0]);
+023 System.out.println(b[1]);
+024 }
+025 }
+
+ |
++Listing0408.java | +
+Die Ausgabe des Programms ist:
+
+
+prim hat 5 Elemente
+b hat 2 Elemente
+2
+3
+5
+7
+11
+true
+false
+
+
+
+
![]() |
+![]() |
+
+
+ +Der Array-Index muss vom Typ int +sein. Aufgrund der vom Compiler automatisch vorgenommenen Typkonvertierungen +sind auch short, +byte +und char +zulässig. Jedes Array hat eine Instanzvariable length, +die die Anzahl seiner Elemente angibt. Indexausdrücke werden +vom Laufzeitsystem auf Einhaltung der Array-Grenzen geprüft. +Sie müssen größer gleich 0 und kleiner als length +sein. |
+
+
|
+![]() |
+
+Mehrdimensionale Arrays werden erzeugt, indem zwei oder mehr Paare +eckiger Klammern bei der Deklaration angegeben werden. Mehrdimensionale +Arrays werden als Arrays von Arrays angelegt. Die Initialisierung +erfolgt analog zu eindimensionalen Arrays durch Angabe der Anzahl +der Elemente je Dimension. + +
+Der Zugriff auf mehrdimensionale Arrays geschieht durch Angabe aller +erforderlichen Indizes, jeweils in eigenen eckigen Klammern. Auch +bei mehrdimensionalen Arrays kann eine literale Initialisierung durch +Schachtelung der Initialisierungssequenzen erreicht werden. Das folgende +Beispiel erzeugt ein Array der Größe 2 * 3 und gibt dessen +Elemente aus: + + +
+
+
+
+001 /* Listing0409.java */
+002
+003 public class Listing0409
+004 {
+005 public static void main(String[] args)
+006 {
+007 int[][] a = new int[2][3];
+008
+009 a[0][0] = 1;
+010 a[0][1] = 2;
+011 a[0][2] = 3;
+012 a[1][0] = 4;
+013 a[1][1] = 5;
+014 a[1][2] = 6;
+015 System.out.println(""+a[0][0]+a[0][1]+a[0][2]);
+016 System.out.println(""+a[1][0]+a[1][1]+a[1][2]);
+017 }
+018 }
+
+ |
++Listing0409.java | +
+Die Ausgabe des Programms ist:
+
+
+123
+456
+
+
+
+
![]() |
+![]() |
+
+
+ +Da mehrdimensionale Arrays als geschachtelte Arrays gespeichert werden, +ist es auch möglich, nicht-rechteckige Arrays zu erzeugen. +Das folgende Beispiel deklariert und initialisiert ein zweidimensionales +dreieckiges Array und gibt es auf dem Bildschirm aus. Gleichzeitig +zeigt es die Verwendung der length-Variable, +um die Größe des Arrays oder Sub-Arrays herauszufinden. |
+
+
|
+![]() |
+
+
+
+
+001 /* Listing0410.java */
+002
+003 public class Listing0410
+004 {
+005 public static void main(String[] args)
+006 {
+007 int[][] a = { {0},
+008 {1,2},
+009 {3,4,5},
+010 {6,7,8,9}
+011 };
+012 for (int i=0; i<a.length; ++i) {
+013 for (int j=0; j<a[i].length; ++j) {
+014 System.out.print(a[i][j]);
+015 }
+016 System.out.println();
+017 }
+018 }
+019 }
+
+ |
++Listing0410.java | +
+Die Arbeitsweise des Programms ist trotz der erst in Kapitel 6
+vorzustellenden for-Schleife
+unmittelbar verständlich. Die Ausgabe des Programms lautet:
+
+
+0
+12
+345
+6789
+
+
+
| Titel + | Inhalt + | Suchen + | Index + | DOC + | Handbuch der Java-Programmierung, 5. Auflage, Addison +Wesley, Version 5.0.1 + |
| << + | < + | > + | >> + | API + | © 1998, 2007 Guido Krüger & Thomas +Stark, http://www.javabuch.de + |