GrabDuck

Многомерные массивы Java — Life-Prog

:

Многомерные массивы в Java отличаются своим объявлением от языков Си и Паскаль.

Многомерные массивы – это  массивы массивов.

Int mx[][] = new int[4][];

При распределемии памяти необходимо указать величину первого крайнего сверху. Измерение под остальные память можно распределять отдельно.

mx[0] = new int [5];
mx[1] = new int [4];
mx[2] = new int [2];
mx[3] = new int [9];

Для каждого массива количество может быть своим. Такие массивы называют нерегулярными или ступенчатыми. Это полездно при инициализации разряженных массивов (где используются не все элементы) .

При инициализации можно использовать константу и переменную.

int x = 10;
int i = 0;
int mx[][]= { {x*i++, x*i++}, {x*i++, x*i++}};

Или можно так:

int x = 10;
int i = 0;
int mx[][]= new int[][] { {x*i++, x*i++}, {x*i++, x*i++}};

Альтернативный систаксис

Альтернативную форму объявления массивов удобно использовать

int [] a1,a2,a3;

int [][]mx1 = new int [2][2],
mx2 =new int [3][4],
mx3,mx4 = {{1,2,3},{4,5},{6}};

int mx11[][] = new int[2][2];
int[]mx111 = mew int[2][2];

В языке Java не допускаются указатели (*).

Итерации в многомерном массиве

Усовершенствованный цикл for применим к многомерным массивам, так как многомерные массивы состоят из подмассивов. Тип итерационной переменной должен быть совместим с типом полученного масива.

Для выполнения итерации в массиве размерностью N, получаемые объекты будут массивами размернотю N-1, что должен придемонстрировать рассмотренный пример:

class Main{
public static void main(String[] args) {
int [][] mx4 = {{1,2,3},{4,5},{6}};
for (int [] x:mx4){
System.out.printf("len = %d:", x.length);
for (int z:x){
System.out.printf(" %d:", z);
System.out.println();
}
}
}
}

Многомерные массивы java

Набор операций с массивами. Поверхностное копирование

В случае с массивом объекта копируются только ссылки

int[] a = {1,2,3,4}, b = {9,8};
System.arraycopy(b, 0, a, 2, b.length);
System.out.println(Arrays.toString(a)); //1,2,9,8

Массивы равны если количество элементов одинакаово и соответствующие элементы эквивалентны.

int [] c = {1,2,3}, d= {1,2,3}, e = {1,2};
System.out.println(Arrays.equals(c,d)); //true
System.out.println(Arrays.equals(d,e)); //false