陣列為有序資料集合,每個元素具相同資料類型,透過統一陣列名稱與下標唯一確定元素。分為一維與多維陣列。
語法:type arrayName[]; 或 type[] arrayName;
type:任意 Java 資料類型(基本型別或複合型別)arrayName:合法識別符[]:指明為陣列型別變數與 C/C++ 不同,定義時不分配記憶體,[] 中不指定長度,亦無法存取元素。必須使用 new 運算子分配空間:
arrayName = new type[arraySize];
常合併寫法:type arrayName = new type[arraySize];
例:int intArray = new int[3]; 配置 3 個 int 記憶體空間。
語法:arrayName[index]
index:整數常數或表達式,如 a[3], b[i], c[6*i]0 開始,至 length-1 結束length 屬性指明長度,如 intArray.lengthpublic class ArrayTest {
public static void main(String args[]) {
int a[] = new int[5];
for(int i=0; i<5; i++) a[i] = i;
for(int i=a.length-1; i>=0; i--)
System.out.println("a[" + i + "] = " + a[i]);
}
}
輸出:a[4]=4 至 a[0]=0
定義同時初始化:int a[] = {1,2,3,4,5};
系統自動分配空間,元素以逗號分隔。與 C 不同,Java 不要求陣列為 static。
public class Fibonacci {
public static void main(String args[]) {
int f[] = new int[10];
f[0] = f[1] = 1;
for(int i=2; i<10; i++) f[i] = f[i-1] + f[i-2];
for(int i=1; i<=10; i++) System.out.println("F[" + i + "] = " + f[i-1]);
}
}
輸出:1, 1, 2, 3, 5, 8, 13, 21, 34, 55
public class BubbleSort {
public static void main(String args[]) {
int intArray[] = {30, 1, -9, 70, 25};
int l = intArray.length;
for(int i=0; i intArray[j]) {
int t = intArray[i];
intArray[i] = intArray[j];
intArray[j] = t;
}
for(int i=0; i
輸出:-9, 1, 25, 30, 70
Java 多維陣列視為「陣列的陣列」。二維陣列為特殊一維陣列,每個元素又是一維陣列。高維情況類似。
語法:type arrayName[][]; 例:int intArray[][];
同樣需用 new 分配記憶體,分配方式有二:
int a[][] = new int[2][3];int a[][] = new int[2][];a[0] = new int[3];a[1] = new int[3];arrayName[index1][index2],下標從 0 開始。
int a[][] = {{2,3},{1,5},{3,4}}; 定義 3×2 陣列public class MatrixMultiply {
public static void main(String args[]) {
int a[][] = new int[2][3];
int b[][] = {{1,5,2,8},{5,9,10,-3},{2,7,-5,-18}};
int c[][] = new int[2][4];
for(int i=0; i<2; i++)
for(int j=0; j<3; j++)
a[i][j] = (i+1)*(j+2);
for(int i=0; i<2; i++)
for(int j=0; j<4; j++) {
c[i][j] = 0;
for(int k=0; k<3; k++)
c[i][j] += a[i][k] * b[k][j];
}
// 輸出矩陣 A、B、C
}
}
結果:
Matrix A: 2 3 4 / 4 6 8
Matrix B: 1 5 2 8 / 5 9 10 -3 / 2 7 -5 -18
Matrix C: 25 65 14 -65 / 50 130 28 -130