Страницы

Поиск по вопросам

воскресенье, 12 мая 2019 г.

Объявление двумерного массива java

Друзья, помогите, пожалуйста, с таким вопросом. Встретил такой кусок кода в Java
public String saveComputingResult(int firstNumber, int secondNumber, String operation) { String[][] arr = new String[2][0]; //** arr[0] = new String[1]; //** arr[1] = new String[1]; //** arr[0][0] = getOperation(operation); arr[1][0] = Integer.toString(getComputingResult(firstNumber, secondNumber, operation)); return arr[0][0] + " - " + arr[1][0];
Кто может пояснить выделенные комментарием //** строки? Объявляется двумерный массив типа String, имеет две строки и....0!!! столбцов. Это как? Что это означает? В Шилдте и Эккеле таких примеров нету, есть только примеры где размер массива указывается для первого массива, так как это обязательно, а второй [] просто остается пустым, но что означает если там 0 внутри? И что означают эти строки при этом??
arr[0] = new String[1]; arr[1] = new String[1];


Ответ

Объявляется массив состоящий из двух массивов нулевой длины. То есть каждый элемент массива имеет указатель на физический адрес, где хранится массив нулевой длины.
При объявлении:
String[][] arr = new String[2][];
каждому элементу массива присвоено значение null вместо указателя на адрес, то есть:
arr[0]=null; arr[1]=null;
В вашем же случае:
String[][] arr = new String[2][0];
тоже самое что:
String[][] arr = new String[2][]; arr[0] = new String[0]; arr[1] = new String[0];
Массивы нулевой длины объявлены и хранятся в памяти, а arr[0] и arr[1] присвоены указатели на адреса в памяти.

Комментариев нет:

Отправить комментарий