Массивы
Как всегда в программировании массив – это совокупность переменных одного типа, хранящихся в смежных ячейках оперативной памяти.
Массивы в языке Java относятся к ссылочным типам и описываются своеобразно, но характерно для ссылочных типов. Описание производится в три этапа.
Первый этап – объявление (declaration). На этом этапе определяется только переменная типа ссылка (reference) на массив, содержащая тип массива. Для этого записывается имя типа элементов массива, квадратными скобками указывается, что объявляется ссылка на массив, а не простая переменная, и перечисляются имена переменных типа ссылка, например:
double[] а, b;
Здесь определены две переменные – ссылки а и b на массивы типа double. Можно поставить квадратные скобки и непосредственно после имени. Это удобно делать среди определений обычных переменных:
int I = 0, ar[], k = -1;
Здесь определены две переменные целого типа i и k, и объявлена ссылка на целочисленный массив аг.
Второй этап – определение (installation). На этом этапе указывается количество элементов массива, называемое его длиной, выделяется место для массива в оперативной памяти, переменная-ссылка получает адрес массива. Все эти действия производятся еще одной операцией языка Java – операцией new тип, выделяющей участок в оперативной памяти для объекта указанного в операции типа и возвращающей в качестве результата адрес этого участка. Например:
а = new double[5]; b = new double[100]; ar = new int[50];
Индексы массивов всегда начинаются с о. Массив а состоит из пяти переменных а[0], а[1],, а[4]. Элемента а[5] в массиве нет. Индексы можно задавать любыми целочисленными выражениями, кроме типа long, например:
a[i+j], a[i%5], a[++i].
Исполняющая система Java следит за тем, чтобы значения этих выражений не выходили за границы длины массива.
Третий этап – инициализация (initialization). На этом этапе элементы массива получают начальные значения. Например:
а[0] = 0.01; а[1] = -3.4; а[2] = 2:.89; а[3] = 4.5; а[4] = -6.7; for (int i = 0; i < 100; i++) b[i] = 1.0 /i; for (int i = 0; i < 50; i++) ar[i] = 2 * i + 1;
Первые два этапа можно совместить:
double[] a = new double[5], b = new double[100]; int i = 0, ar[] = new int[50], k = -1;