java - Java 中 N 维数组的大小可以改变吗?

标签 java arrays

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/

相关文章:

java - TestNG:确定下一步是哪些测试方法

java - 通过反射获取String变量的值

java - 在二维矩阵中查找特定单词(对角线)

javascript - 插入数组会覆盖之前的值

javascript - 如何合并数组内重复对象的属性

java - 在 Java 调试 session 期间查找大字符串分配

Java和Weka : Creating a string attribute

java - Malt 解析器抛出类未找到异常

c++ - 如何检查对象是否在数组中?

python - 保留 numpy 数组每一行的 n 个最大值,并将其他所有值归零