Друзья, помогите, пожалуйста, с таким вопросом. Встретил такой кусок кода в 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] присвоены указатели на адреса в памяти.
Комментариев нет:
Отправить комментарий