Java 中的数组是一个对象。因此,如果我有一个二维数组 double[][] matrix = new double[5][5]
那么该数组的每一行都是一个引用内存中一维数组的对象。据我了解,一旦在 java 中设置了数组大小,就无法更改。所以让我声明一个一维数组 double[] d = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
然后我可以设置 matrix [1] = d
这样第 1 行现在指向内存中的 d。我好像数组大小并不是真正固定的。我可以将 matrix
声明为任意大小,只需将引用更改为指向不同大小的数组即可。如果 matrix
大小固定为 5 x 5,为什么我可以这样做?
最佳答案
作业
double[][] matrix = new double[5][5];
实际上创建了6个数组对象。一个元素类型为 double[]
的数组(即 double 数组的数组),长度为 5 并由 matrix
变量引用,以及 5 个元素类型为double
的长度为 5,由 matrix[0]...matrix[4]
引用。
正如您可以通过赋值更改 matrix
变量以引用新数组一样:
matrix = new double[10][10];
您还可以更改任何引用 matrix[i]
以通过分配来引用新数组:
matrix[i] = new double[6];
您没有更改任何现有数组。您正在将引用一个数组的引用变量的值更改为引用另一个数组。
关于java - Java 中 N 维数组的大小可以改变吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39687450/