Java:二维数组是以列优先还是行优先的顺序存储的?
在Java中,多维数组是以列优先还是行优先的顺序存储的?
回答:
Java没有多维数组。它具有数组的数组。例如
int[][]
…是int[]
(当然int[]
是)的数组int
。
因此,Java既不是列优先顺序也不是行优先顺序(但请参见下面的有关如何读取的注意事项a[2][3]
),因为给定数组的条目存储在连续的内存块中,而这些条目所指向的从属数组是对象的引用。完全独立的,无关的内存块。这也意味着Java的数组数组固有地呈
锯齿状
:处的条目[0]
可能引用了3个插槽的数组,其中的处[1]
引用了4个插槽的数组,[2]
可能根本没有引用一个数组(它可能具有null
),可能[3]
是指6插槽阵列。
一幅图片价值1k-24字,以及以下所有内容:
+-------+ +----> | int [] |
+---------- +-------+
| int [] [] | | | 0:整数|
+---------- | 1:int |
| 0:int [] | ------- + | 2:int |
| 1:int [] | ------ + + ---------- +
| 2:空| |
| 3:int [] |-+ | +-------+
+---------- +----> | int [] |
| +-------+
| | 0:整数|
| | 1:int |
| | 2:int |
| | 3:int |
| +-------+
|
| +-------+
+--------| int [] |
+-------+
| 0:整数|
| 1:int |
| 2:int |
| 3:int |
| 4:int |
| 5:int |
+-------+
知道之后,您就知道(say)的a[2][3]
意思是“获取索引2
为a
的条目所引用的3
数组,然后获取该下级数组的索引所引用的条目”。我认为它与行优先顺序相当相似,但并不是完全一样。
以上是 Java:二维数组是以列优先还是行优先的顺序存储的? 的全部内容, 来源链接: utcz.com/qa/415514.html