[英]Java Two Dimensional Array Definition
我有一個基本的問題。
例如:
int a[][] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}
我們說它是[3] [4],因為它有3個元素,每個元素都有自己的4個元素。
但怎么樣:
int a[][] = {{1},{5,6,7},{9,10,11,12}}
還在[3] [4]嗎?
更新
所以基於下面的有用評論,我的第一個例子可以寫成[3] [4]數組,但第二個例子不能像那樣表示,對吧?
這些被稱為Jagged Arrays ,它們不被認為是m-by-n ,因為它們不符合Matrix的形式定義。
在數學中,矩陣(多個矩陣)是以行和列排列的數字,符號或表達式的矩形陣列。
根據java
多維數組是一個數組,其組件本身就是數組。 這與C或Fortran中的數組不同。 其結果是允許行的長度變化。
取int a[][]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}
這里你不能說[3] [4]數組,但可以說它有3個元素,每個元素都有自己的4個元素。
取int a[][]={{1},{5,6,7},{9,10,11,12}}
所以在這里你可以說數組有3個元素,每個元素都有不同數量的元素。
我剛剛在Android環境中進行了此測試,這可能適用於這種情況(我認為)
int a[][] = { { 1 }, { 5, 6, 7 }, { 9, 10, 11, 12 } };
for (int i = 0; i < a.length; i++) {
Log.i("", "i: " + i);
for (int j = 0; j < a[i].length; j++) {
Log.i("", "j: " + j);
}
}
我得到的是:
i: 0
j: 0
i: 1
j: 0
j: 1
j: 2
i: 2
j: 0
j: 1
j: 2
j: 3
所以, a
不是int[3][4]
。
這不是[3] [4]。
其陣列 ,其中外部陣列維數“3”和陣列元素,這是再一次陣列,分別具有不同長度,即1,3和4的陣列 。
不它不是。 當你像int[][] test = new int[3][4]
那樣只是語法糖。 雙陣列沒什么神奇的。
兩個示例都是數組的數組。 你的第一個碰巧讓所有這些陣列都具有相同的成功,而你的第二個則沒有。
作為旁注,絕大多數java程序員使用int[][] a
表示法,而不是int a[][]
表示法。
Java中沒有二維數組。
只存在數組數組, 其中每個數組可以具有不同的長度 。
對於矩陣,請考慮線性內存布局,並使用其中一個現有庫。
請注意,以下內容在Java中有效:
int[][] example = new int[2][2];
example[0] = new int[]{1,2,3,4,5,6,7,8,9,10};
而適當的矩陣模塊不允許這種情況發生。
這既是優點,也是弱點 。 有些應用程序只需要數組數組。 並且存在更有效的情況(例如,僅存儲半個三角形矩陣)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.