JAVA學習筆記——數組
軟體版本:
java version "1.7.0_05"
eclipse
目錄:
1. 聲明數組
2. 執行個體化數組
3. 初始化數組
4. 二維數組
5. length 屬性
6. foreach 迴圈
7. 參考資料
1. 聲明數組
JAVA 支援兩種格式聲明數組:
type[] ArrayName;
type ArrayName[]; // 不推存這樣子寫
要注意的是,聲明後的數組還不能使用。它只聲明變數 ArrayName 為 type 類型的數組,並沒有指向任何有效記憶體空間(相當於指標),所以不能使用。在已定義流程中,也不可以在方括弧內指定數組的長度。
數組的長度是在數組執行個體化或者數組初始化的過程中確定下來的,只有被執行個體化或者初始化後的數組才能夠使用。
2. 執行個體化數組
所謂的執行個體化,其實就是為數組在堆中分配記憶體空間。格式為:
1)
type[] ArrayName; // 聲明數組
ArrayName = new type[length]; // 執行個體化數組,為數組分配記憶體
2)
type[] ArrayName = new type[length]; // 聲明並執行個體化數組
3. 初始化數組
初始化數組其實不但將數組執行個體化,而且還賦予了數組初始值。格式為:
1)
type[] ArrayName; // 聲明數組
ArrayName = new type[]{element1, element2, element3,...}; // 初始話數組
2)
type[] ArrayName = {element1, element2, element3,...}; // 定義並初始化數組·········(1)
要注意的是,下面這樣子初始化是不行的。
type[] ArrayName; // 定義(聲明)數組
ArrayName = {element1, element2, element3,...}; // 注意與(1)的區別
既指定長度,又進行賦值,也是不行的:
1)
type[] ArrayName; // 聲明數組
ArrayName = new type[length]{element1, element2, element3, ...}; // 初始話數組
2)
type[] ArrayName = new type[length]{element1, element2, element3, ...}; // 定義並初始化數組
4. 二維數組
可以這樣子理解二維數組,就是建立一個數組用來儲存多個不同長度的一維數組。對於 n 維數組可以理解為,建立一個數組,儲存多個不同長度的 n-1 維數組。二維數組的聲明方法:
type[][] ArrayName;
type ArrayName[][]; // 還是不推薦這樣子寫
type[] ArrayName[]; // 這麼怪的寫法也支援
執行個體化:
1)
type[][] ArrayName = new type[length1][length2]; // 聲明並執行個體化
2)
type[][] ArrayName = new type[length1][]; // 只執行個體化第一級數組是可以的,但是不能只執行個體化第二級數組
ArrayName[num1] = new type[length2]; // 執行個體化第二級數組
ArrayName[num2] = new type[length3]; // 他們的長度可以不一樣
初始化:
type[][] ArrayName = new type[][]{{elements1...}, {elements2...}, {elements2...}, ...};
type[][] ArrayName = {{elements1...}, {elements2...}, {elements2...}, ...}; // 也可以這樣子
就這樣子看起來有點複雜,弄個例子容易明白點。
int[][] numbers = new int[][]{{2, 3}, {5, 10}, {20, 30}};String[][] str = new String[][]{new String[3], new String[]{"hello"}};
5. length 屬性
在 JAVA 中所有的數組都提供一個 length 屬性,表示數組的長度。我們可以通過它來遍曆整個數組。
for(int i = 0; i < ArrayName.length; i++){ System.out.println(ArrayName[i]);}
你猜一下,如果 ArrayName 是一個二維數組將會怎麼樣?將會輸出第一級數組的長度。
6. foreach 迴圈
foreach 迴圈,用來迴圈遍曆數組和集合會更加簡潔。格式:
for(type variableName : ArrayName | collection)
{
// 每一次迴圈 variableName 都將擷取 ArrayName 中的一個元素,直到最後一個跳出迴圈。
}
例子:
1 public class test { 2 public static void main(String[] args) { 3 4 int[][] numbers = new int[][]{{2, 3}, {20, 30, 40}, {200, 300}, {2000, 3000}}; 5 6 for(int i[] : numbers) 7 { 8 for(int j : i) 9 {10 System.out.println(j);11 }12 }13 }14 }
由於 numbers 是一個二維數組,所以第 6 行的 i 是一個一維數組。這樣子 i 才能指向每一個 nembers 的第一級數組。
7. 參考資料
[1]. 《瘋狂JAVA講義》李剛
[2]. http://android.yaohuiji.com/archives/3379