Обычно первый индекс массива Java начинается с нуля (0), но свойство length
Массивы дают фактический счетчик массива.
Например, рассмотрим следующий массив целых чисел:
int[] numbers = {40, 55, 63, 17, 22, 68, 89, 97, 89}
Этот массив также может быть представлен графически, как показано ниже ![array description](https://i.stack.imgur.com/M88X7.png)
Так что, если мы хотим запустить цикл для этого массива, например:
for(int i=0; i<numbers.length; i++){
//this loop runs 9 times
}
В указанном выше цикле i
было инициализировано 0
, и максимальное значение i
может достигать 8
, но цикл будет выполняться 9 раз, потому что если вы посчитаете весь путь от 0
до 8
вы получите 9
Но если вы запустите такой цикл
for(int i=0; i<numbers.length-1; i++){
//this loop runs 8 times
}
Цикл будет выполняться 8 раз, но максимальное значение, которое может получить i
, составляет 7
Ваш инструктор использовал newARRAY.length-1
, потому что он не хотел, чтобы максимальное значение i
превышало the immediate lower number following newARRAY.length-1
, потому что он использовал значение i+1
, чтобы индексировать массив newArray
где-то в коде.
Если бы он не использовал newARRAY.length-1
в коде, когда i
достигнет своего максимального значения, newARRAY[i+1]
выдаст ошибку IndexOutOfbounds
, потому что последний индекс newARRAY
был бы превышен, потому что 1
он добавляет к i
для доступа к newARRAY
Надеюсь, вы это поняли.