數組是有序資料的集合,數組中的每個元素具有相同的數組名和下標來唯一地確定數組中的元素。
1. 一維數組
1.1 一維數組的定義
type arrayName[];
type[] arrayName;
其中類型(type)可以為Java中任意的資料類型,包括簡單類型組合類別型,數組名arrayName為一個合法的標識符,[]指明該變數是一個數群組類型變數。
第二種形式對C++開發人員可能覺得很奇怪,不過對JAVA或C#這樣的開發語言來說,第二種形式可能更直觀,因為這裡定義的只是個變數而已,系統並未對其執行個體化,只需指明變數的類型即可,也不需在[]指定數組大小。(第一種形式是不是只是為了相容以前的習慣,畢竟C語言的影響太大了?)
例如:
int intArray[];
聲明了一個整型數組,數組中的每個元素為整型資料。與C、C++不同,Java在數組的定義中並不為數組元素分配記憶體,因此[]中不用指出數組中元素個數,即數組長度,而且對於如上定義的一個數組是不能訪問它的任何元素的。我們必須為它分配記憶體空間,這時要用到運算子new,其格式如下:
arrayName=new type[arraySize];
其中,arraySize指明數組的長度。如:
intArray=new int[3];
為一個整型數組分配3個int型整數所佔據的記憶體空間。
通常,這兩部分可以合在一起,格式如下:
type arrayName=new type[arraySize];
例如:
int intArray=new int[3];
1.2 一維數組元素的引用
定義了一個數組,並用運算子new為它分配了記憶體空間後,就可以引用數組中的每一個元素了。數組元素的引用方式為:
arrayName[index]
其中:index為數組下標,它可以為整型常數或運算式。如a[3],b[i](i為整型),c[6*I]等。下標 從0開始,一直到數組的長度減1。對於上面例子中的in-tArray數來說,它有3個元素,分別為:
intArray[0],intArray[1],intArray[2]。注意:沒有intArray[3]。
另外,與C、C++中不同,Java對數組元素要進行越界檢查以保證安全性。同時,對於每個數組都有一個屬性length指明它的長度,例如:intArray.length指明數組intArray的長度。
public class ArrayTest{<br /> public static void main(String args[]){<br /> int i;<br /> int a[]=new int[5];<br /> for(i=0;i<5;i++)<br /> a[i]=i;<br /> for(i=a.length-1;i>=0;i--)<br /> System.out.println("a["+i+"]="+a[i]);<br /> }<br />}<br />
運行結果如下:
C:/>java ArrayTest
a[4]=4
a[3]=3
a[2]=2
a[1]=1
a[0]=0
該程式對數組中的每個元素賦值,然後按逆序輸出。
1.3 一維數組的初始化
對數組元素可以按照上述的例子進行賦值。也可以在定義數組的同時進行初始化。
例如:
int a[]={1,2,3,4,5};
用逗號(,)分隔數組的各個元素,系統自動為數組分配一定空間。
與C中不同,這時Java不要求數組為靜態(static),其實這裡的變數類似C中的指標,所以將其作為傳回值給其它函數使用,仍然是有效,在C中將局部變數返回給調用函數繼續使用是初學者很容易犯的錯誤。
2. 多維陣列
與C、C++一樣,Java中多維陣列被看作數組的數組。例如二維數組為一個特殊的一維數組,其每個元素又是一個一維數組。下面我們主要以二維數為例來進行說明,高維的情況是類似的。
2.1 二維數組的定義
二維數組的定義方式為:
type arrayName[][];
例如:
int intArray[][];
與一維數組一樣,這時對數組元素也沒有分配記憶體空間,同要使用運算子new來分配記憶體,然後才可以訪問每個元素。
對高維數組來說,分配記憶體空間有下面幾種方法:
1. 直接為每一維分配空間,如:
int a[][]=new int[2][3];
2. 從最高維開始,分別為每一維分配空間,如:
int a[][]=new int[2][];
a[0]=new int[3];
a[1]=new int[3];
完成1中相同的功能。這一點與C、C++是不同的,在C、C++中必須一次指明每一維的長度。
2.2 二維數組元素的引用
對二維數組中每個元素,引用方式為:arrayName[index1][index2] 其中index1、index2為下標,可為整型常數或運算式,如a[2][3]等,同樣,每一維的下標都從0開始。
2.3 二維數組的初始化
有兩種方式:
1. 直接對每個元素進行賦值。
2. 在定義數組的同時進行初始化。
如:int a[][]={{2,3},{1,5},{3,4}};
定義了一個3×2的數組,並對每個元素賦值。