【发布时间】:2014-01-20 18:40:46
【问题描述】:
我正在准备考试,但遇到了一个我无法解决的问题。
这里的问题是“运行代码后,二维数组“arr”中可以存储多少个不同的int值?”
int[][] arr = new int[3][];
arr[0] = new int[5];
for (int i = 1; i < arr.length; i++)
{
arr[i] = arr[i-1];
}
我认为答案是 7,原因如下:
您创建二维数组“arr”并立即声明它在一维中具有 3 个开放值。
然后你说第一个开放值变成了一个数组本身,包含 5 个开放值。
最后,for循环说原始数组的第二个值成为第一个值,原始数组的第三个值也是如此。 (这些值未初始化,因此归结为 0 变为 0,因为这是整数的标准值)
给出 7。
虽然根据我的书答案应该是 5,但我找不到原因。
提前致谢!
【问题讨论】:
-
java 中有 reference 的历史术语 - arr[i] 不持有 arr[i-1] 的 copy 而是reference(指向与 arr[i-1] 相同的内存)到数组,因此对 arr[i-1] 的任何更改都会立即反映在 arr[i] 上,反之亦然。它比这更复杂,但基本上就是这样。 :) Helper tutorial with image explaining reference.
-
我现在明白了,谢谢!
标签: java multidimensional-array