簡體   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