int[] data = new int[10];

Eine gute Antwort könnte sein:

  1. Was ist die Länge des Arrays data? 10
  2. Was sind die Indizes vondata? 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 von length 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 data[1] und data[ 1 ] ist exakt dasselbe, 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 Dekalration 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 (gewöhnlich) das Programm beendet.

Während ein Java Programm läuft wird jedes Mal, wenn ein Array Index verwendet wird, überprüft, ob er OK ist. Dies wird bounds checking (Grenzen überprüfen) genannt und ist extrem wichtig um Fehler abzufangen.

FRAGE 6:

Hier ist eine Deklaration eines weiteren Arrays:

int[] scores = new int[25];

Welche der folgenden Anweisungen ist legal?

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