【发布时间】:2018-04-11 11:03:36
【问题描述】:
在下面的代码中,我定义了一个 (2x2) 二维数组 arr。然后我声明一个包含 5 个元素的一维字符串数组a,并将其分配给二维数组的第一行。为什么允许我这样做,为什么它不抛出数组索引超出界限异常?
我认为这可能是由于引用分配,但我仍然对如何允许在运行时更改数组维度感到困惑。
String a[] = { "1", "2", "3", "4", "5" };
String[][] arr= new String[2][2];
int x;
arr[0] = a;
x = arr[0].length;
System.out.print("The row length is "+ x);
输出:行长为5。
【问题讨论】:
-
@TimBiegeleisen 分配后行长变为 5。
-
哇,我不知道这个,有点。
arr[0]是对一维数组的引用,您可以根据需要进行任何分配。在 Java 中,2D(或 3D 等)数组可以是锯齿状的,这意味着第二维不必全部相同。 -
作为参考,您根本不必定义第二维的长度。
String[][] arr = new String[1][];已经有效,但如果您删除第一个维度的大小或仅初始化第二个维度的大小,则会引发错误 -
@XtremeBaumer 所以,看来第二个维度无关紧要..
-
你用这个做什么?