[英]Can the size of an N-dimensional array change in Java?
Java中的数组是一个对象。 因此,如果我有一个2D数组double[][] matrix = new double[5][5]
那么该数组的每一行都是一个引用内存中单维数组的对象。 根据我的理解,一旦在java中设置了数组大小,就无法更改。 所以让我声明一个1D数组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[]
的数组(即双数组数组),长度为5,由matrix
变量引用,5个数组的元素类型为double
,长度为5,由matrix[0]...matrix[4]
引用matrix[0]...matrix[4]
。
就像你可以通过赋值改变matrix
变量来引用一个新数组一样:
matrix = new double[10][10];
您还可以通过指定以下内容来更改任何引用matrix[i]
以引用新数组:
matrix[i] = new double[6];
您没有更改任何现有阵列。 您正在更改引用变量的值,该引用变量引用一个数组以引用不同的数组。
简单地说:因为这就是Java的父亲使阵列工作的方式。
语法给出了一个提示:
double[][] matrix = new double[5][5]
你看,5,5只出现在右手边 ! 含义:数组维度不是 矩阵 “类型”的一部分!
关键是:Java中没有真正的“多维”数组。 没有办法说:这个东西应该是“5 x 5”。 你总是得到一排“行”; 每行包含一列列。 因此,这些列可以具有不同的长度,因为它们完全相互独立!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.