赋值如何在java中的多维数组中工作?

时间:2018-03-30 12:33:09

标签: java arrays algorithm multidimensional-array data-structures

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?

2 个答案:

答案 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],请执行以下步骤:

  1. 评估i(结果为4)
  2. 评估i=3(将i设置为3,结果为3)
  3. 评估i(自上一步将其设置为3后产生3)
  4. 因此,创建数组的维度为4,3,3。