Guido Krüger - JAVA 1.1 lernen - Kapitel 4

Previous Page Previous Page TOC TOC Index Next Page Previous Page



Arrays

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:

Hinweis

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.

Deklaration und Initialisierung

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 eckige Klammern gehängt werden:

int a[];
double b[];
boolean[] c;

Hinweis

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:

a = new int[5];
b = new double[10];
c = new boolean[15];

Ist bereits zum Deklarationszeitpunkt klar, wie viele Elemente das Array haben soll, können Deklaration und Initialisierung zusammen geschrieben werden:

int a[] = new int[5];
double b[] = new double[10];
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:

int x[] = {1,2,3,4,5};
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.

Zugriff auf Array-Elemente

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:

Beispiel

public class Example0403 {
   public static void main(String[] args)
   {
      int prim[] = new int[5];
      boolean b[] = {true,false};

      prim[0] = 2;
      prim[1] = 3;
      prim[2] = 5;
      prim[3] = 7;
      prim[4] = 11;

      System.out.println("prim hat "+prim.length+" Elemente");
      System.out.println("b hat "+b.length+" Elemente");
      System.out.println(prim[0]);
      System.out.println(prim[1]);
      System.out.println(prim[2]);
      System.out.println(prim[3]);
      System.out.println(prim[4]);
      System.out.println(b[0]);
      System.out.println(b[1]);
   }
}

Die Ausgabe des Programms ist:

prim hat 5 Elemente
b hat 2 Elemente
2
3
5
7
11
true
false

Praxistip

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.

Mehrdimensionale Arrays

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:

Beispiel

public class Example0404 {
   public static void main(String[] args)
   {
      int a[][] = new int[2][3];

      a[0][0] = 1;
      a[0][1] = 2;
      a[0][2] = 3;
      a[1][0] = 4;
      a[1][1] = 5;
      a[1][2] = 6;
      System.out.println(""+a[0][0]+a[0][1]+a[0][2]);
      System.out.println(""+a[1][0]+a[1][1]+a[1][2]);
   }
}

Die Ausgabe des Programms ist:

123
456

Praxistip

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:

Beispiel

public class Example0405 {
   public static void main(String[] args)
   {
      int a[][] = { {0},
                    {1,2},
                    {3,4,5},
                    {6,7,8,9}
                   };
      for (int i=0; i<a.length; ++i) {
         for (int j=0; j<a[i].length; ++j) {
            System.out.print(a[i][j]);
         }
         System.out.println();
      }
   }
}

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


Previous Page Previous Page Page Top TOC Index Next Page Previous Page

(C) 1997 Guido Krueger, "Java 1.1 lernen", Addison-Wesley, Bonn, 1997