#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];
Ответы
Ответ 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] присвоены указатели на адреса в памяти.Ответ 2
Согласно en-SO и здравому смыслу при записи String[][] arr = new String[2][0]; мы получаем массив из 2 массивов типа String с нулевой длинной. Далее в приведённом вами коде ячейки массива заполняются новыми массивами с одной ячейкой в каждой: arr[0] = new String[1]; arr[1] = new String[1]; При этом, т.к. ячейки не инициализированы, то if(arr[1][0]==null) System.out.println("NULL!!!111one"); выведет NULL!!!111one Таким образом, при последующем присваивании ячейкам элементов массива arr других массивов ставить им длину равную 0 (или любой другой цифре) смысла, в общем, не имеет.
Комментариев нет:
Отправить комментарий