哪一个在二维数组,行或列中最先出现?

在创build二维数组时,如何记住是否首先指定行或列?

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

例如:

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] 

它也可以更形象化:

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

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

TL; DR总结:

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

有关更多解释,另请参阅数组 – 二维

虽然Matt B可能在某种意义上是真实的,但是根本不需要考虑几何matrix就可以帮助我们思考Javamultidimensional array。 Javamultidimensional array只是数组的数组,而第一个“维”的每个元素可以与其他元素的大小不同,或者实际上实际上可以存储空的“子”数组。 请参阅此问题下的评论

本能地认为几何:水平(X)轴然后垂直(Y)轴。 然而,这不是2D数组的情况,行先出现然后是列。

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

在Java中,没有multidimensional array。 有数组的数组。 所以:

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

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

全部取决于你对arrays的可视化。 行和列是数组的可视化属性(可能在您的想象中),而不是数组本身。

这与询问数字“5”是红色还是绿色完全一样?

我可以把它画成红色,我可以把它画成贪婪的权利? 颜色不是数字的一个整体属性。 以相同的方式将2D数组表示为行和列的网格对于该数组的存在不是必需的。

二维数组只有第一维第二维 ,与可视化相关的一切都是纯粹的你的味道。

当我有字符数组char[80][25] ,我可能想旋转控制台上打印它,使我有25行80个字符适合屏幕没有滚动。

我将尝试提供可行的例子来表示二维数组,因为行和列根本没有意义 :比方说,我需要一个1000万个整数的数组。 我的机器有8GB的RAM,所以我有足够的内存,但是如果你尝试执行var a = new int[1000000000] ,你很可能会遇到OutOfMemoryexception。 这是因为内存碎片 – 没有连续的这种大小的内存块。 相反,你可以用你的值创build二维数组10 000 x 100 000。 从逻辑上讲,它是一维数组,所以你想绘制和想象它作为一个单一的值序列,但由于技术实现它是二维的。

在java中,行是先完成的,因为二维数组被认为是两个独立的数组。 从第一行1维数组开始。