哪一个在二维数组,行或列中最先出现?
在创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维数组开始。