哪个首先出现在2D数组,行或列中?

Mat*_*t B 68 java multidimensional-array

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

MrH*_*hma 79

Java被认为是"行主要",这意味着它首先执行行.这是因为2D阵列是"阵列阵列".

例如:

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]
Run Code Online (Sandbox Code Playgroud)

它也可以更像这样:

a[0] ->  [0] [1] [2] [3]
a[1] ->  [0] [1] [2] [3]
Run Code Online (Sandbox Code Playgroud)

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

TL; DR摘要:

Array[number of arrays][how many elements in each of those arrays]
Run Code Online (Sandbox Code Playgroud)

有关更多说明,请参阅阵列 - 二维.

  • 我很喜欢这个答案提供的可视化. (5认同)

Kev*_*ker 21

虽然Matt B在某种意义上可能是真的,但是在不考虑几何矩阵的情况下考虑Java多维数组可能会有所帮助.爪哇多暗淡阵列是简单的数组的数组,以及第一"尺寸"中的每个元件可以是不同的尺寸从所述其他要素,或者事实上实际能存储空"子" -array.请参阅此问题下的评论

  • 用于表达ARRAY与MATRIX对比的+1!数组没有几何定义.如果您认为一维数组是垂直的,那么行是第一个,如果您认为一维数组是水平的,则col是第一个.使用矩形2D数组时,只要在整个代码中保持相同,就没有逻辑上的区别.根据您的使用情况进行实施!(当你可以遍历第一个子阵列时,不要让自己遍历每个子阵列的第一个元素) (4认同)

Mat*_*t B 12

本能地认为是几何学的:水平(X)轴,然后是垂直(Y)轴.然而,这不是2D阵列的情况,首先是行,然后是列.

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

  • @Luiggi请参考[可以提出并回答您自己的问题](http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/)在其中你会发现(除其他事项外):"要说清楚,不仅可以提出并回答你自己的问题,而是明确鼓励. (11认同)

Sas*_*sha 5

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

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

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

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

当我有 char array 时char[80][25],我可能想在旋转的控制台上打印它,以便我有 25 行 80 个字符适合屏幕而不滚动。

当将二维数组表示为行和列根本没有意义时,我将尝试提供可行的示例:假设我需要一个包含 1 000 000 000 个整数的数组。我的机器有 8GB 的​​内存,所以我有足够的内存,但是如果你尝试执行var a = new int[1000000000],你很可能会得到 OutOfMemory 异常。那是因为内存碎片 - 没有这种大小的连续内存块。相反,您可以使用您的值创建二维数组 10 000 x 100 000。逻辑上它是一维数组,所以你想把它想象成一个单一的值序列,但由于技术实现,它是二维的。