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)
有关更多说明,请参阅阵列 - 二维.
Kev*_*ker 21
虽然Matt B在某种意义上可能是真的,但是在不考虑几何矩阵的情况下考虑Java多维数组可能会有所帮助.爪哇多暗淡阵列是简单的数组的数组,以及第一"尺寸"中的每个元件可以是不同的尺寸从所述其他要素,或者事实上实际能存储空"子" -array.请参阅此问题下的评论
Mat*_*t B 12
本能地认为是几何学的:水平(X)轴,然后是垂直(Y)轴.然而,这不是2D阵列的情况,首先是行,然后是列.
考虑以下类比:在几何中,一个人走向梯子(X轴)并爬上它(Y轴).相反,在Java中,一个人下降梯子(行)并走开(列).
一切都取决于您对数组的可视化。行和列是数组的可视化属性(可能在您的想象中),而不是数组本身。
这和问数字“5”是红色还是绿色完全一样?
我可以把它画成红色,我可以把它画成贪婪,对吧?颜色不是数字的整体属性。以同样的方式将二维数组表示为行和列的网格对于该数组的存在是不必要的。
二维数组只有第一维和第二维,与可视化这些相关的一切纯粹是你的品味。
当我有 char array 时char[80][25],我可能想在旋转的控制台上打印它,以便我有 25 行 80 个字符适合屏幕而不滚动。
当将二维数组表示为行和列根本没有意义时,我将尝试提供可行的示例:假设我需要一个包含 1 000 000 000 个整数的数组。我的机器有 8GB 的内存,所以我有足够的内存,但是如果你尝试执行var a = new int[1000000000],你很可能会得到 OutOfMemory 异常。那是因为内存碎片 - 没有这种大小的连续内存块。相反,您可以使用您的值创建二维数组 10 000 x 100 000。逻辑上它是一维数组,所以你想把它想象成一个单一的值序列,但由于技术实现,它是二维的。
| 归档时间: |
|
| 查看次数: |
143621 次 |
| 最近记录: |