繁体   English   中英

Java中的多维数组如何分配工作?

[英]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维数组。

根据15.10.2。 数组创建表达式的运行时评估

首先,从左到右评估维度表达式。 如果任何表达式评估突然结束,则不评估其右边的表达式。

这是一个简单的案例,没有例外,仅规则的从左到右部分适用。 因此,要评估new int[i][i=3][i] ,将发生以下步骤:

  1. 评估i (得出4)
  2. 评估i=3 (将i设置为3并得出3)
  3. 评估i (由于上一步将其设置为3,因此得出3)

因此,用于创建数组的尺寸为4、3、3。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM