Java數組類型
數組是什麼?
數組是一個固定長度的數據結構,用於保存多個相同數據類型的值。在數據類型之後或在變量聲明中的變量名稱之後放置[]
,使變量成爲數組。
例如,
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循環數組
可以使用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;
數組的類名以左中括號[
開頭。左括號的數量等於數組的維數。