关于Java:在2D数组、行或列中最先出现的是什么?

Which comes first in a 2D array, rows or columns?

创建二维数组时,如何记住是先指定行还是先指定列?


Java被认为是"行主要",这意味着它首先行。这是因为二维数组是"数组数组"。

例如:

1
2
3
4
5
int[ ][ ] a = new int[2][4];  // Two rows and four columns.

a[0][0] a[0][1] a[0][2] a[0][3]

a[1][0] a[1][1] a[1][2] a[1][3]

它也可以像这样被可视化:

1
2
a[0] ->  [0] [1] [2] [3]
a[1] ->  [0] [1] [2] [3]

第二个图显示了"数组"方面。第一个数组包含{a[0] and a[1]},每个数组包含四个元素,{[0][1][2][3]}

DR摘要:

1
Array[number of arrays][how many elements in each of those arrays]

有关更多说明,请参见数组-二维。


虽然Matt B在某种意义上可能是真的,但在不考虑地理矩阵的情况下,可以想到Java多维数组。Java多点数组只是数组的数组,第一个"维度"的每个元素可以与其他元素大小不同,或者实际上可以存储一个空的"子"数组。查看此问题下的评论


本能地认为几何:水平(X)轴,然后垂直(Y)轴。然而,对于二维数组,情况并非如此,先是行,然后是列。

考虑下面的类比:在几何学中,一个人走到梯子(x轴)并爬到梯子(y轴)。相反,在Java中,一个下降梯子(行)并走开(列)。


所有这些都取决于您对数组的可视化。行和列是数组可视化(可能在您的想象中)的属性,而不是数组本身。

这和问"5"号是红色还是绿色完全一样?

我可以画红色,我可以画贪婪,对吧?颜色不是数字的整数属性。以同样的方式,将二维数组表示为行和列的网格对于该数组的存在是不必要的。

二维数组只有第一个维度和第二个维度,与可视化相关的一切都纯粹是您的风格。

当我有char数组char[80][25]时,我可能希望在控制台上打印它旋转,这样我就有25行80个字符,可以在不滚动的情况下适合屏幕。

当将二维数组表示为行和列时,我将尝试提供一个可行的例子:假设我需要一个1000 000 000个整数的数组。我的机器有8GB的RAM,所以我有足够的内存来处理这个问题,但是如果您尝试执行var a = new int[1000000000],您很可能会遇到内存不足的异常。这是因为内存碎片——没有连续的如此大小的内存块。相反,您可以使用值创建二维数组10000x 100 000。从逻辑上讲,它是一维数组,所以您希望将其绘制并想象为单个值序列,但由于技术实现的原因,它是二维的。


在爪哇,没有多维数组。有数组。所以:

1
int[][] array = new int[2][3];

它实际上由两个数组组成,每个数组有三个元素。


在Java中,首先完成行,因为2维数组被认为是两个独立的数组。从第一行维度数组开始。