Если я инициализировать массив в методе Java, как:окончательный 2D массив в Java
final double[][] myArray = new double[r][c];
Будет ли мне позволено сделать это позже в методе?
myArray[0] = new double[c];
Если я инициализировать массив в методе Java, как:окончательный 2D массив в Java
final double[][] myArray = new double[r][c];
Будет ли мне позволено сделать это позже в методе?
myArray[0] = new double[c];
Я приведу вам пример этого:
public class Main {
public static void main(String[] args) {
final int[] finalArray = new int[5];
finalArray[0] = 10;
System.out.println(finalArray[0]);
finalArray[0] = 9001;
System.out.println(finalArray[0]);
finalArray = new int[5] //compile error!!!
}
}
Это происходит потому, что модификатор final
будет сказать, что ссылка на массив (указатель) не может измениться, но элементы массива (которые могут иметь другой указатель) могут быть изменены без проблем.
EDIT:
Другой пример с 2d массив:
public class Main {
public static void main(String[] args) {
final int[][] array2d = new int[5][];
for(int i = 0; i < array2d.length;i++) {
array2d[i] = new int[6];
}
//the size of the rows can change with no problem.
array2d[0] = new int[8];
}
}
Благодарим вас за конструктивный ответ. В двумерном случае могу ли я предположить, что каждая отдельная строка моего массива является другим массивом с указателем, и я меняю свою ссылку, когда я это делаю? – Erol
Да, если вы попробуете код, он будет работать. Я сделаю обновление с примером этого. –
Да, вы можете. Более подробную информацию о массивах http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
Непонятно, как ссылка связана с вопросом точно – Attila
Я был заинтересован в последнем ключевом слове, потому что в другом месте я читал, что такая инициализация не позволит мне изменить ссылку на массив. Разве я не изменяю ссылку таким образом? – Erol
Вы изменяете ссылку только на один элемент, который разрешен. – Celeritas
Да. Разве вы не попробовали это для себя? –