陣列Array是什麼勒?它由一群相同資料型態的變數所組成,不一定只能放int或string,物件也可以放。陣列在記憶體中使用連續的記憶體空間,想要找資料就是透過索引值來做存取。
陣列在Java裡是以物件的方式存在,所以本身是一種reference資料型態。它也跟一般物件一樣,在呼叫時也須使用new指令來分配儲存空間,
要注意宣告時就必須指定長度並且之後無法改變
可先不放值:
int x[] = new[3];
也可在宣告時就設值:
int x[] = new[3];
x[0] = 1;
x[1] = 2;
x[2] = 3;
或是
int x[] = {1, 2, 3};
宣告時,中括號可以放在名稱的前面或後面。
int x1[];
int[] x2;
int x3[], y3[];
int[] x4, y4;
arrayName.length
如果這種寫法是用在一維陣列的話可以取得的是元素個數,如果是用在二維陣列取得的則是橫列數。另外要注意的是length之後不可以加上小括弧,因為它不是一個method,跟String類別中的length()不一樣,而是陣列中的一個屬性。
int[] intArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
System.out.println(intArray.length); // 10
arrayName[index]
想取得裡面的元素很簡單,由於裡面的元素是有順序性的,所以可以根據索引值來成功拿取,不過索引值是從0開始的,這部分要注意一下。
// 把陣列內數字加總
int[] intArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int sum = 0;
for (int i = 0; i < intArray.length; i++)
sum += intArray[i];
System.out.println("sum="+sum);
除了有一維的陣列,Java還有提供多維的陣列。由於一維陣列只能儲存一個種類的資料。如果想使用陣列來儲存多個種類的資料時,就可以用到多維陣列。例如我想儲存班上各學生座號及國文和數學的成績。此時我們就可以使用多維陣列來表示這些資料,程式中可以利用每一維的陣列來各個同學的座號以及成績。
int score[][] = new int[5][3];
也像一維一樣可以宣告時便給值:
int score[][] = {
{1, 76, 80},
{2, 80, 65},
{3, 44, 82},
{4, 100, 74},
{5, 78, 76},
};
如果想把多維陣列裡所有數值加總則是要用到巢狀迴圈的方式,也就是迴圈內還有一個迴圈,這用這種方法一行一行的加總。
// 把陣列內數字加總
int[][] intArray = {
{ 1, 2, 3, 4, 5},
{ 6, 7, 8, 9, 10 }
};
int sum = 0;
for(int i = 0; i < intArray.length; i++) {
for(int j = 0; j < intArray[i].length; j++) // 該行的長度
sum += intArray[i][j];
}
System.out.println("sum="+sum);
Java除了提供這種方方正正的陣列,其實還有一種是非矩形陣列,也就是每一行的元素個數不一致,不要看它醜醜的,這種不規則的陣列宣告語法也是一種合法的宣告方式。
int xx[][] = new int[3][];
xx[0] = new int[2];
xx[1] = new int[3];
xx[2] = new int[4];
好了今天就簡單介紹Array到這裡,明天會再介紹幾個常用在陣列裡的方法