java - 如何计算多维数组的元素个数?

标签 java arrays multidimensional-array

自从我学习二维数组以来,我就一直有这个问题......我希望有人能为我澄清事情......

这是我所知道的
int[] x= new int[2];
这个一维数组有两个元素。

int[][] y=new int[2][3];
这个二维数组有六个元素,对吗? (2 x 3 = 6)

但是当我研究二维数组的实际制作方式时,

  1. 首先是一个名为y的引用类型变量,可以存储内存 二维数组的地址是在栈中生成的。

  2. 然后是一个具有两个元素的对象,可以存储一维 内存地址是在堆中创建的。

  3. 然后再制作2个一维数组,每个数组包含3个 可以存储int类型值的元素。和内存地址 这两个一维数组被分配给两个元素 是之前在对象内部制作的。
  4. 然后这个对象的内存地址被分配给y变量 已在堆栈中。

现在我遇到的问题是,一开始在该对象内只创建了两个元素,对吧? 这是否意味着二维数组有两个元素两个一维数组各有 3 个元素?

所有这些问题都让我烦恼,因为 y.length = 2y[0].length =3

如果我错了,请纠正我,希望有人能帮助我。谢谢

最佳答案

是的,你说得完全正确。 Java 本身没有二维数组。它所拥有的只是包含数组的数组,以及用于创建它们的语法糖(new int[2][3])。

但是你确实可以有一个包含不同长度数组的数组:

int[][] array = new int[2][];
array[0] = new int[5];
array[1] = new int[3];
System.out.println(Arrays.deepToString(array));
// prints [[0, 0, 0, 0, 0], [0, 0, 0]]

因此,如果您得到一个 int[][] 并且想知道它包含多少个整数,您需要循环遍历外部数组并对内部数组的长度求和。除非你保证所有内部数组都具有相同的长度。在这种情况下,您可以将外部数组的长度乘以任何内部数组的长度。

关于java - 如何计算多维数组的元素个数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41659672/

相关文章:

java - 使用 Android 模式和匹配器类(正则表达式)

java - 如何有效地将入站 netty.io ByteBuf 消息分发到 ChannelGroup?

java - Firebase Android ListView 未显示

python - 取带有掩码元素的 numpy ndarray 的平均值

c# - 如何初始化尺寸在运行时决定的 C# 数组?

java - 为什么 Jersey 2.22 的 Jersey bundle 中包含 "javax.servlet-api-3.0.1"?

javascript - 是什么导致 Squarespace 站点中初始化为 = [] 的数组在第一次引用它之前用对象填充?

php - 如何从玩家手中移除重复的扑克牌?

c# - 输出行/列中的二维数组

c - 在没有 VLA 的情况下传递可变大小的多维数组