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;

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


上一篇: Java StringBuilder和StringBuffer用法 下一篇: Java數組元素