[英]How does assignment work in multi-dimensional arrays in java?
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?
长度为4,因为您要在初始化数组之前将i初始化为4。
所以用实际值代替我
int ia[][][] = new int[4][3][3];
另外,我会考虑在初始化数组的同时分配ia新值,这是不好的做法(可读性)。
此外,ia不会“拥有3个数组”,而是一个3维数组。
首先,从左到右评估维度表达式。 如果任何表达式评估突然结束,则不评估其右边的表达式。
这是一个简单的案例,没有例外,仅规则的从左到右部分适用。 因此,要评估new int[i][i=3][i]
,将发生以下步骤:
i
(得出4) i=3
(将i
设置为3并得出3) i
(由于上一步将其设置为3,因此得出3) 因此,用于创建数组的尺寸为4、3、3。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.