|
Arrays in Java unterscheiden sich dadurch von Arrays in anderen Programmiersprachen, daß 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 semidynamisch, 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 der einer einfachen Variablen, mit dem Unterschied, daß an den Typnamen oder den Variablennamen (beide Varianten sind erlaubt) eckige Klammern gehängt werden:
001 int a[]; 002 double b[]; 003 boolean[] c; |
Zum Zeitpunkt der Deklaration wird noch nicht festgelegt, wie viele Elemente das Array haben soll. Dies geschieht erst später bei der Initialisierung des Arrays, die mit Hilfe des new-Operators oder durch literale Initialisierung ausgeführt wird. Sollen also beispielsweise die oben deklarierten Arrays 5, 10 und 15 Elemente haben, so 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 muß 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 durchnumeriert. 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:
|
![]() |
|
![]() |
Die Ausgabe des Programms ist:
prim hat 5 Elemente
b hat 2 Elemente
2
3
5
7
11
true
false
Der Array-Index muß 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:
|
![]() |
|
![]() |
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: |
![]() |
|
![]() |
|
![]() |
|
![]() |
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
|
Go To Java 2, Addison Wesley, Version 1.0.2, © 1999 Guido Krüger, http://www.gkrueger.com |