class Test {
public static void main(String[] args) {
int i = 4;
int ia[][][] = new int[i][i=3][i];
System.out.println(ia.length + ", " + ia[0].length + ia[0][0].length);
}
}
我想知道会打印3,4,3而不是有效答案:“4,3,3”。 变量ia有3个数组,为什么ia.length不是3?
答案 0 :(得分:1)
长度为4,因为在初始化数组之前,你在行中将i初始化为4。
所以用你正在做的实际值替换我
int ia[][][] = new int[4][3][3];
另外,我会考虑在初始化数组的同时为我分配一个新值,这是一种不好的做法(可读性)。
此外,ia没有“有3个数组”,这是一个三维数组。
答案 1 :(得分:1)
根据15.10.2. Run-Time Evaluation of Array Creation Expressions
首先,从左到右评估维度表达式。如果任何表达式评估突然完成,则不会评估其右侧的表达式。
这是一个简单的例子,没有例外,只适用规则的从左到右的部分。因此,要评估new int[i][i=3][i]
,请执行以下步骤:
i
(结果为4)i=3
(将i
设置为3,结果为3)i
(自上一步将其设置为3后产生3)因此,创建数组的维度为4,3,3。