Дескрипторы объектов и массив массивов - PullRequest
2 голосов
/ 01 июня 2010

В документации blackberry говорится, что массив принимает один дескриптор объекта:

int[] array; // 1 object handle

Сколько дескрипторов занимает массив массивов?

int[][] array = new int[4][2]; // how many handles?

Я не могу понять, будет ли он единичным, так как, в конце концов, массив может быть истолкован как один фрагмент памяти или он кратен (5 в данном случае), потому что по одному на элемент массив первого уровня?

1 Ответ

3 голосов
/ 01 июня 2010

В Java нет многомерных массивов, как вы узнали. Имеет массив массивов.

Учитывая это объявление:

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

Существует 4 int[] массивов, каждый из которых имеет 2 int элементов.

Object o1 = array[0];
Object o2 = array[1];
Object o3 = array[2];
Object o4 = array[3];

Следовательно, это означает, что array также является Object[].

Object[] oX = array;

То, что у вас есть int[][], не означает, что каждый int[], конечно, отличается.

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

Теперь есть только один int[], и каждый weird[i] делится этой ссылкой.

weird[0][2] = 5;
System.out.println(weird[3][2]); // prints "5"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...