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];

要創建一個數組來存儲5int類型的值:

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數組,並將其元素初始化爲12345。數組的長度與數組初始化列表中指定的值的數量相同。逗號跟隨初始化列表中每個值直到最後一個值。

// 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;

數組的類名以左中括號[開頭。左括號的數量等於數組的維數。