Философия Java


Многомерные массивы - часть 2


Первый пример показывает многомерный массив примитивных типов. Вы ограничиваете каждый вектор в массиве с помощью фигурных скобок:

int[][] a1 = { { 1, 2, 3, }, { 4, 5, 6, }, };

Каждая пара квадратных скобок переносит нас на новый уровень в массиве.

Второй пример показывает трехмерный массив, резервируемый с помощью new. Здесь весь массив резервируется сразу:

int[][][] a2 = new int[2][2][4];

А в третьем примере показано, что каждый вектор массива, создающий матрицу, может быть произвольной длины:

int[][][] a3 = new int[pRand(7)][][]; for(int i = 0; i < a3.length; i++) { a3[i] = new int[pRand(5)][]; for(int j = 0; j < a3[i].length; j++) a3[i][j] = new int[pRand(5)]; }

Первый new создает массив произвольной длиной первого элемента, а остальные элементы не определены. Второй new, внутри цикла for, заполняет элементы, но оставляет третий индекс неопределенным, пока вы не введете третий new.

Вы увидите на выводе, что значения массива автоматически инициализируются нулями, если вы не передадите им явно начальные значения.

Вы можете работать с массивами не примитивных объектов точно таким же образом, что показано в четвертом примере, демонстрирующем возможность помещения множества выражений new в фигурных скобках:

Integer[][] a4 = { { new Integer(1), new Integer(2)}, { new Integer(3), new Integer(4)}, { new Integer(5), new Integer(6)}, };

Пятый пример показывает, как можно построить массив не примитивных объектов по частям:

Integer[][] a5; a5 = new Integer[3][]; for(int i = 0; i < a5.length; i++) { a5[i] = new Integer[3]; for(int j = 0; j < a5[i].length; j++) a5[i][j] = new Integer(i*j); }

i*j - это просто помещает отличное от нуля значение в Integer.




Начало  Назад  Вперед



Книжный магазин