在Java中,是一个以列主要或行主要顺序存储的多维数组吗?
答案 0 :(得分:67)
Java没有多维数组。它有数组数组。例如,
int[][]
...是int[]
的数组(当然int[]
是一个int
数组。
因此,Java既不是列主要顺序也不是行主顺序(但请参阅下面有关如何读取a[2][3]
的说明),因为当给定数组的条目存储在连续的内存块中时,从属数组这些条目指向对象引用完全独立的,不相关的内存块。这也意味着Java的数组数组本质上是锯齿状:[0]
处的条目可能指的是3插槽数组,[1]
处的数组可能指的是4插槽阵列,[2]
可能根本不引用数组(它可能有null
),也许[3]
指的是6个插槽的数组。
一张图片价值1k-24字以及所有:
+−−−−−−−−+ +−−−−>| int[] | +−−−−−−−−−−−+ | +−−−−−−−−+ | int[][] | | | 0: int | +−−−−−−−−−−−+ | | 1: int | | 0: int[] |−−−−−−+ | 2: int | | 1: int[] |−−−−−−+ +−−−−−−−−+ | 2: null | | | 3: int[] |−−+ | +−−−−−−−−+ +−−−−−−−−−−−+ | +−−−−>| int[] | | +−−−−−−−−+ | | 0: int | | | 1: int | | | 2: int | | | 3: int | | +−−−−−−−−+ | | +−−−−−−−−+ +−−−−−−−−−| int[] | +−−−−−−−−+ | 0: int | | 1: int | | 2: int | | 3: int | | 4: int | | 5: int | +−−−−−−−−+
一旦你知道,你知道(比方说)a[2][3]
的意思是“获取2
的索引a
上的条目所引用的数组,然后获取index {引用的条目这个从属数组的{1}}。“我认为它与行主要订单非常相似,但它并不完全相同。
答案 1 :(得分:4)
在Java中,您只有一维数组。
2D数组基本上只是一维数组的一维数组。
int[ ][ ] table;
table = new int[3][ ];
table[0] = new int[5];
table[1] = new int[5];
table[2] = new int[5];
答案 2 :(得分:2)
都不是。 Java中的二维数组是对数组的引用数组。它没有线性存储在内存中。