陣列是一個固定長度的資料結構,用於儲存多個相同資料型別的值。在資料型別之後或在變數宣告中的變數名稱之後放置[]
,使變數成為陣列。
int myID;
上面是一個簡單的變數宣告。 這裡,int
是資料型別,myID
是變數名。
上面的這個宣告意味著myID
變數可以儲存一個整數值。如果要宣告陣列,可在上面的宣告中的資料型別之後放置[]
,如下所示 -
int[] myID;
使myID
是一個陣列變數。上面的宣告應叫作「myID
是一個int
陣列」。可以通過在變數名之後放置[]
來使myID
變數成為一個陣列,像這樣:
int myID[];
上述兩個宣告都是有效的。
不能在宣告陣列時指定陣列可以儲存的值的數量。可以宣告一個陣列來儲存同資料型別的多個值。 以下是其它形式的陣列宣告範例:
// salary can hold multiple float values
float[] salary;
// name can hold multiple references to String objects
String[] name;
// emp can hold multiple references to Employee objects
Employee[] emp;
陣列建立的一般語法如下:
以下程式碼建立Arraylength
長度型別為ArrayDataType
的陣列物件
new ArrayDataType[Arraylength];
要建立一個陣列來儲存5
個int
型別的值:
new int[5];
在此表示式中,5
是陣列的長度,它也稱為陣列的維度。有多個維度的陣列稱為多維陣列。還可以將陣列的宣告及其建立在一個語句中組合。
int[] myID = new int[5];
因為所有陣列都是物件,所以它們的參照可以分配給物件型別的參照變數。 例如,
int[] myID = new int[5]; // Create an array object
Object obj = myID; // A valid assignment
當宣告陣列或使用new
運算子建立陣列物件時,可以顯式初始化陣列的元素。元素的初始值由逗號分隔,並用大括號{}
括起來。
// Initialize the array at the time of declaration
int[] myID = {1, 2, 3, 4, 5};
此程式碼建立長度為5
的int陣列,並將其元素初始化為1
,2
,3
,4
和5
。陣列的長度與陣列初始化列表中指定的值的數量相同。逗號跟隨初始化列表中每個值直到最後一個值。
// A comma after the last value 5 is valid.
int[] myID = {1, 2, 3, 4, 5, };
或者,可以初始化陣列的元素,如下所示:
int[] myID = new int[]{1, 2, 3, 4, 5};
對於參照型別陣列,可以指定初始化列表中的物件列表。以下程式碼說明了String
的陣列初始化。
String[] names = {new String("A"), new String("B")};
或
String[] names = {"C", "D"};
可以使用for-each
迴圈與陣列。語法如下:
for(DataType e : array) {
}
以下程式碼使用for-each
迴圈列印int
陣列的所有元素:
int[] numlist = {1, 2, 3};
for(int num : numlist) {
System.out.println(num);
}
可以使用基本的for
迴圈完成同樣的事情,如下:
int[] numlist = {1, 2, 3};
for(int i = 0; i < numlist.length; i++) {
int num = numlist[i];
System.out.println(num);
}
陣列是物件。Object
類中的getClass()
方法返回類的參照。
以下程式碼說明如何獲取陣列的類名。
public class Main {
public static void main(String[] args) {
int[] iArr = new int[1];
int[][] iiArr = new int[1][1];
int[][][] iiiArr = new int[1][1][1];
String[] sArr = { "A", "B" };
String[][] ssArr = { { "A" }, { "B" } };
String[][][] sssArr = {}; // A 3D empty array of string
// Print the class name for all arrays
System.out.println("int[]:" + getClassName(iArr));
System.out.println("int[][]:" + getClassName(iiArr));
System.out.println("int[][][]:" + getClassName(iiiArr));
System.out.println("String[]:" + getClassName(sArr));
System.out.println("String[][]:" + getClassName(ssArr));
System.out.println("String[][][]:" + getClassName(sssArr));
}
public static String getClassName(Object obj) {
Class c = obj.getClass();
String className = c.getName();
return className;
}
}
上面的程式碼生成以下結果。
int[]:[I
int[][]:[[I
int[][][]:[[[I
String[]:[Ljava.lang.String;
String[][]:[[Ljava.lang.String;
String[][][]:[[[Ljava.lang.String;
陣列的類名以左中括號[
開頭。左括號的數量等於陣列的維數。