Создание массива и обращение к нему
| English | Русский |
|---|---|
| initializer list/ɪˈnɪʃəlaɪzə lɪst/ | список инициализации |
| ArrayIndexOutOfBoundsException/əˈreɪ ˈɪndeks ˈaʊtəv baʊndz ekˈsepʃn/ | ArrayIndexOutOfBoundsException |
Создание массива
- Объявите массив с типом и
[]:int[] scores; - Создайте его с помощью
newи размера:int[] scores = new int[5];(пять ячеек). - Или перечислите значения непосредственно:
int[] scores = {85, 90, 78};(список инициализатора). - Каждая ячейка начинается со значения по умолчанию для типа (
0дляint,nullдля объектов).
Индексация с нуля
- Элементы массива нумеруются начиная с
0; последний индекс равенlength - 1. - Обратитесь к ячейке с помощью
scores[i]:scores[0]— первый,scores[2]— третий. - Присвойте значение с помощью
scores[0] = 100;и прочитайте с помощьюint x = scores[0];. - Ошибка «off-by-one» на последнем индексе — самая частая ошибка в работе с массивами.
Поле длины
- Размер массива определяется полем
length— без скобок:scores.length. - (Сравните метод
String's соlength()методом, который имеет скобки.) lengthфиксируется после создания массива — массивы не изменяют свой размер.- Используйте
scores.lengthв условиях цикла, чтобы оставаться в пределах допустимых границ.
За пределами допустимых границ
- Действительный индекс находится в диапазоне от
0доlength - 1; любое другое значение вызывает ошибку ArrayIndexOutOfBoundsException. - Индекс
scores[5]для массива длиной 5 является выходом за пределы (допустимые индексы0–4). - Условие цикла
i < scores.lengthудерживает ⟨i⟩ в допустимых пределах. - Никогда не используйте
<=вместе сlength— это выходит за границу конца.
Размер массива — это поле length (без скобок); длина String — это метод length() (со скобками). Их перепутывание приведет к ошибке компиляции. Действительные индексы находятся в диапазоне от 0 до length - 1 — значение scores[scores.length] выходит за пределы конца массива и вызывает исключение ArrayIndexOutOfBoundsException. Используйте цикл с i < scores.length, никогда не используйте i <= scores.length.
Создание и обращение к массиву:
int[] a = {10, 20, 30};— длина3, индексы0,1,2.a[0]равно10;a[2]равно30;a.lengthравно3.a[3]вызывает ArrayIndexOutOfBoundsException (нет индекса 3).
Создайте массив с помощью new type[size] или списка инициализации {...}. Элементы нумеруются от 0 до length - 1, accessed as a[i]. Размер определяется полем length (без скобок). Индекс вне диапазона 0..length-1 вызывает ArrayIndexOutOfBoundsException — используйте цикл с i < a.length.
Нумерация индексов массива начинается с 0
a[0]=10, a[1]=20, a[2]=30; a.length равно 3.
Для int[] a = {10, 20, 30}; что такое a[0]?
Массивы нумеруются с 0, поэтому a[0] — первый элемент, 10.
Как получить размер массива a?
Размер массива определяется полем length (без скобок).
Для int[] a = {10, 20, 30}; что такое a.length?
Три элемента → длина 3.
Для массива длиной 5, обращение к индексу 5 (a[5])...
Допустимые индексы от 0 до 4; индекс 5 выходит за пределы.
String использует length() (метод), а массив — length (поле).
Различный синтаксис — скобки для String, без них для массивов.