在二维数组中首先打印哪个?

Which to print first in a 2D Array?

有人告诉我,当您有一个代码来打印一个数组时,有一种约定,即有一个值必须比另一个值先出现,例如:

1
2
3
for (int i = 0; i < array.length; i++) {
        for (int j = 0; j < array[i].length; column++)
            System.out.print("" + array[i][j]);}

i优先还是需要j优先?我找到了像这样的答案,但它们不能解决我的疑问…

PS:我不是在问Java,而是关于C,C,C++,JavaScript等等。


正如你所写,公约是按顺序进行的:

1
2
3
for (int i = 0; i < array.length; i++) {
        for (int j = 0; j < array[i].length; column++)
            System.out.print("" + array[i][j]);}

这里,循环中ij之前,array也在j之前被i索引。

这是代码中所写的自然顺序。它也是存储元素存储在大多数语言中的顺序(Java,C,C,C,C++)。这被称为行主顺序,其中同一行中的元素位于连续的内存位置中。

对于按行主顺序排列的3×3数组a[3][3],元素存储为:

1
a[0][0], a[0][1], a[0][2], a[1][0], a[1][1], a[1][2], a[2][0], a[2][1], a[2][2]

按行主顺序索引到数组中也有性能优势。通过按顺序访问内存,可以最小化缓存未命中。


1
for (int i = 0; i < array.length; i++) {

意味着i作为array元素的索引(元素恰好是子数组)。

1
for (int j = 0; j < array[i].length; column++)

指示j用作array[i]元素(array的子数组)的索引。

所以是的,i必须在j之前。