int[] data = new int[10];

Eine gute Antwort wäre:

  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

Erinnern Sie sich daran, dass:

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

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 einen Slot zu verweisen, der nicht existiert:

Angenommen, dass ein Array deklariert würde:

int[] data = new int[10];

Hier sind einige indexierte Variablen dieses Arrays:

data[ -1 ] immer illegal
data[ 10 ] illegal   (die obere Deklaration vorausgesetzt)
data[ 1.5 ] immer illegal
data[ 0 ] immer OK
data[ 9 ] OK   (die obere Deklaration vorausgesetzt)

Wenn Ihr Programm einen Ausdruck enthält, der immer illegal ist, wird es nicht kompilieren. Aber oft ist die Größe eines Arrays 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 voraussehen. Wenn das Programm zur Laufzeit auf einen Slot verweist, der nicht existiert, wird eine Ausnahme (Exception) ausgelöst und das Programm wird (gewöhnlich) beendet.

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

FRAGE 6:

Hier ist eine 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 ]
Inhaltsverzeichnis