次のようなJavaメソッドで配列を初期化するとします。
final double[][] myArray = new double[r][c];
メソッドの後半でこれを行うことはできますか?
myArray[0] = new double[c];
次のようなJavaメソッドで配列を初期化するとします。
final double[][] myArray = new double[r][c];
メソッドの後半でこれを行うことはできますか?
myArray[0] = new double[c];
はい、できます。配列の詳細についてはhttp://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html
この例を示します。
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
、配列への参照 (ポインタ) は変更できないが、配列の要素 (別のポインタを持つ可能性がある) は問題なく変更できると修飾子が言うためです。
編集:
2次元配列の別の例:
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];
}
}