在java中數組被看成是一個對象
在定義數組時,有兩種定義方法:int[] a 和int a[];第二種是C/C++對數組定義方式,對於JAVA建議採用第一種定義方式。
總的原則:任何對象在被調用之前必須先被初始化!
1 一維數組的定義
//定義包含三個元素的一維數組
//方法1,先new對象,然後再初始化每個元素
int[] a = new int[3];
a[0] = 1;
a[1] = 2;
a[2] = 3;
方法一要注意的是不能這樣寫:
int[] a = new int[3];
a = {1,2,3};
原因是用new int[3]這種方式建立對象,對象已經被初始化並賦初值為0;可以用下面代碼驗證:
int[] d = new int[3];
for(int i=0;i<d.length;i++){
System.out.println(d[i]);
}
輸入結果是:0 0 0
如果再用a = {1,2,3};來賦值,大家知道常量是不能再被賦值的,不可修改的。
//方法2,直接賦初值來建立對象
int[] b = {1,2,3};
//方法3,new完對象直接初始化
int[] c = new int[]{1,2,3};
方法三要注意的是不能這樣寫: int[] c = new int[3]{1,2,3};
即這種方法不能指定維度,原因:如果指定了數組初始化操作,則不能定義維運算式。
注意:如果用new定義數組時,必須指定其維度,這樣定義是錯誤的: int[] d = new int[];
如果無法確定其元素個數,可以這樣定義:int[] e = {};
2 二維數組的定義
基本與一維數組類似
//定義一個3行5列的二維數組
//方法1,先new對象,然後再初始化每個元素
int[][] a = new int[3][5];
a[0][0]=1;
a[0][1]=2;
a[0][2]=3;
//方法2,直接賦初值來建立對象
int[][] b = {{1,1,1,1,1}, {2,2,2,2,2}, {3,3,3,3,3} };
//方法3,new完對象直接初始化
int[][] a = new int[][]
{{1,1,1,1,1}, {2,2,2,2,2}, {3,3,3,3,3} };
定義二維數組必須指定其行數,列數可以指定,可以不指定。
這樣定義是正確的:int[][] d = new int[3][];
這樣定義是錯誤的:int[][] d = new int[][4]; int[][] d = new int[][];
也可以定義不規則數組:
arr = new int[2][];
arr[0] = new int[3];
arr[1] = new int[5];
3 數組的長度
length是數組的一個屬性(不是方法!),對於一維數組int[] b = {1,2,3}; b.length的值是3,
對於二維數組,首先研究一下它的配置細節:int[][] arr = new int[2][3];
上面這個程式片段中,配置了
2
行
3
列的二維數組對象,由於資料類型是
int
,所以數組元素的預設元素為
0
。
其實
arr[0]
、
arr[1]
是兩個一維數組對象,其長度各為
3
,而
arr
類型是
int[] []
,內容值為
arr[0]
與
arr[1]
。其關係1
所示。
圖
1
二維數組的配置關係
從圖
1
中可以看到,
arr
引用
int[] []
類型的對象,內容包括
arr[0]
與
arr[1]
,而
arr[0]
與
arr[1]
再分別引用一個一維數組對象。
因此
arr.length
與
arr[0].length
所表示的長度意義是不同的,arr.length表示的是數組的行數,arr[i].length表示的是指定行所包含的元素數。本例中,arr.length=2,arr[0].length=3。
4 數組的初始值
數 據 類 型
|
初 始 值
|
數 據 類 型
|
初 始 值
|
byte
|
0
|
float
|
0.0f
|
short
|
0
|
double
|
0.0d
|
int
|
0
|
char
|
/u0000
|
long
|
0L
|
boolean
|
false
|