3

在Java中你可以做到这一点

int[][] i = new int[10][];

这只是创建 10 个空的 int 数组吗?它还有其他含义吗?

4

5 回答 5

5

它创建一个包含 10 个条目的数组int[]。这 10 个数组引用中的每一个最初都是null. 然后您需要创建它们(并且因为 Java 没有真正的多维数组,所以这 10int[]个条目中的每一个都可以是任意长度)。

例如:

int i[][] = new int [10][];
i[0] = new int[42];
i[1] = new int[17];
// ...and so on
于 2013-03-20T02:59:54.093 回答
2

执行您的代码会创建一个大小为 10 的数组,其中的每个元素都可以包含对 a 的引用int[],但它们都被初始化为 null。

为了使用int[]s,您必须为每个元素创建新的 int[],如下所示:

for (int n = 0; n < 10; n++)
    i[n] = new int[10]; // make them as large as you need
于 2013-03-20T03:00:27.103 回答
1

是的,它确实; 但是,这些数组中的每一个都是空的。然后,您必须初始化每个子数组,方法是说 int[10][0] = new int[MY_SIZE] 或类似的东西。您可以在主数组中拥有不同长度的数组;例如,此代码将起作用:

int[][] i = new int[10][];
for(int ind = 0; ind<10;ind++){
    i[ind]=new int[ind];
}

它只是一个数组数组。

于 2013-03-20T03:01:45.853 回答
1

在这里,您创建了十个new int[0]数组。您必须手动初始化它,当您不需要方阵时它很有用:

    int[][] array = new int[10][];
    for (int i = 0; i < array.length; i++) {
        array[i] = new int[i];
    }

如果你需要方阵,你可以这样做:

    int[][] array = new int[10][10];

它将使用默认值进行初始化。

于 2013-03-20T03:02:42.423 回答
0

那只是声明,您需要对其进行初始化。这 10 个数组最初为空。

于 2013-03-20T02:51:21.797 回答