创建数组数组 (2D),而无需在 Java 中初始化内部数组



我想从N个(一维)数组构建一个2D数组。唯一的问题是,据我所知,在 Java 中声明多维数组的唯一方法需要您指定所有内部维度大小,然后创建这些子数组。在这种情况下,这似乎是浪费,因为它们将被覆盖

在C++中,我可以这样做:

Object** arr = new Object*[n];
for(int i=0;i<n; ++i)
{
      arr[i] = getObjArr();
}

在Java中,你必须这样说:

Object[][] arr = new Object[n][0]; //inner dimension is required

将创建这 n 个零长度数组中的每一个,只是在填充数组时被覆盖。有没有办法在不分配内部数组的情况下声明一个多维数组(类似于指向 C 的指针语法的指针)?

当然。 我不知道你为什么认为你必须这样做!

   double[][] foo = new double[2][];

完全没问题。 "内部"数组将为空。

不必

指定内部尺寸。 这在Java中是合法的:

Object[][] arr = new Object[n][];

这将创建一个n元素数组,其中每个元素的类型为 Object[] 。 由于未指定内部维度,因此这些n元素都将初始化为 null 。 然后,您可以将所需的任何Object[]分配给这些数组元素中的任何一个n

对于高维数组,规则(如果您没有初始值设定项)是您可以说new T后跟一个或多个指定维度 ([some-value]),后跟未指定维度的零个或多个[]。 你不能让[]后跟[value]

相关内容

  • 没有找到相关文章