zur vorherigen Seite zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

int[] data = new int[10];
  1. Was ist die Länge des Arrays data? 10
  2. Was sind die Indizes von data? 0, 1, 2, ..., 8, 9

Grenzen überprüfen

int[] data = new int[10];
data[ -1 ] immer illegal
data[ 10 ]    illegal
(nach der gegebenen Deklaration)   
data[ 1.5 ] immer illegal
data[ 0 ] immer OK, wenn das Array existiert
data[ 9 ] OK
data[ j ] hängt vom aktuellen Wert von j ab

Erinnert Euch daran, dass:

Die Länge eines Arrays in der Anzahl seiner Zellen besteht. Ein Array mit der Länge N hat 0..(N-1) indexierte Zellen.

Indizes müssen vom Typ Integer sein. Es ist OK Leerzeichen um den Index eines Arrays zu haben, zum Beispiel ist data[1] und data[ 1 ] exakt das gleiche, soweit es den Compiler betrifft.

Es ist nicht legal auf eine Zelle zu verweisen, die nicht existiert:

Angenommen wir haben folgendes Array deklariert:

int[] data = new int[10];

Die Tabelle zeigt indexierte Variable dieses Arrays.

Wenn das Programm einen Ausdruck enthält, der immer illegal ist, wird es nicht kompilieren. Die Größe eines Arrays ist dem Compiler nicht bekannt. Die Größe eines Arrays wird häufig durch die Daten zur Laufzeit bestimmt. Da das Array zur Laufzeit des Programms konstruiert wird, kennt der Compiler seine Länge nicht und kann keine Fehler feststellen.

Während ein Java Programm läuft wird jedes Mal, wenn ein Arrayindex verwendet wird, überprüft ob er OK ist. Das wird Grenzen überprüfen (Bounds Checking) genannt und ist äußerst wichtig, um Fehler abzufangen.

Wenn ein laufendes Programm auf eine Zelle verweist, die nicht existiert, wird ein ArrayIndexOutOfBoundsException ausgelöst, und das Programm wird beendet.


FRAGE 6:

Hier ist die Deklaration eines weiteren Arrays:

int[] punkte = new int[25];

Welche der folgenden Anweisungen ist legal?

punkte[ 0 ] punkte[ 1 ] punkte[ -1 ]
punkte[ 10 ] punkte[ 25 ] punkte[ 24 ]

zur vorherigen Seite zum Inhaltsverzeichnis   zur nächsten Seite