假设以下数组
int myarray [][][] = new int [12][12][3];
此数组声明生成了多少引用?
我认为应该是12 * 12 * 3,因为数组中可以存储多少个元素。
但是,我的同事认为,有12 + 12 * 12,因为直接在“ myarray”中有12个引用,而从第二个维度到第三个维度指向144个引用。
但是在该数组中存储的实际值比引用数少吗?
答案 0 :(得分:2)
让我们弄清楚Java程序员所说的“引用”是什么意思。引用引用的是对象值,包括数组,而不是诸如int
之类的原始值,后者不引用任何其他对象-只是一个值。有12 * 12 * 3个值,但引用数量不相同。
每个最低级别的数组中都没有引用,因为基本类型是原始类型-int
。这意味着最后一个3的长度不会对引用数产生任何影响。
在Java中,多维数组是作为数组的数组实现的。中间值12表示12分别引用长度为3的数组。第一个值12表示12分别引用由中间值描述的12个数组。您的同事很亲密,这意味着该多维数组中包含的引用数为12 + 12 * 12或156。在3D数组中,这是12个2D数组的12个外部引用,再加上144个1D数组的144个内部引用。 。包括引用myArray
本身就是157。