一、學習要求
書籍參考章節(jié): 第3.10章節(jié)
學習目標:
- 掌握數(shù)組的基本概念
- 數(shù)組的定義和初始化
- 數(shù)組的操作
二、參考知識
數(shù)組是用來存儲一組相同類型的數(shù)據(jù)??梢詣?chuàng)建任意類型的數(shù)組。并且數(shù)組可以是一維或多維的。另外需要注意的是,數(shù)組不是簡單類型,它是對象類型。下面來詳細介紹。
基本概念
我們先看一個簡單例子:
public class Demo {
public static void main(String[] args) {
//聲明了一個 整型數(shù)組,并創(chuàng)建數(shù)組對象,指定長度為10
int[] a = new int[10];
for(int i=0;i<10;i++){
//設置數(shù)組元素的值
a[i] = i*2;
}
for(int j=0;j<10;j++){
//獲取數(shù)組元素的值
int value = a[j];
System.out.println(value);
}
}
}
上面簡單例子包含了數(shù)組變量的聲明、數(shù)組對象的創(chuàng)建、數(shù)組元素的訪問。下面我們一一來詳細描述。
數(shù)組變量的聲明
數(shù)組變量聲明的語法是:
數(shù)據(jù)類型[] 數(shù)組變量; 或 數(shù)據(jù)類型 數(shù)組變量[];
下面是合法的數(shù)組聲明:
int[] a;
int a[];
Object[] objs;
Object arr[];
也就是說,[]既可以放在變量名的前面,也可放在變量名的后面,且[]與前后的類型名或變量名之間可以有空格,也可以沒有空格。
注意聲明數(shù)組變量時不能指定數(shù)組的長度。如下面的數(shù)組聲明是非法的。
int values[10];
數(shù)組對象的創(chuàng)建
java中使用關(guān)鍵字new創(chuàng)建數(shù)組對象,格式為:
數(shù)組變量名 = new 數(shù)組元素的類型 [數(shù)組元素的個數(shù)];
注意這里的類型必須與聲明的類型一致。如:
int [] a;
a = new int[10]; //創(chuàng)建數(shù)組對象,賦值給變量a
a = new int[20]; //創(chuàng)建新的數(shù)組對象,給變量a重新賦值
也可以把聲明和賦值語句合一,如:
int[] a = new int[10];
注意,數(shù)組的長度是在創(chuàng)建數(shù)組對象時設置的,而且必須要設置。而且,創(chuàng)建數(shù)組對象后,數(shù)組的長度是不能改變的。
數(shù)組對象的隱式創(chuàng)建
在實際編碼中,除了顯示的通過new操作符創(chuàng)建數(shù)組對象外,我們還可以通過直接初始化的方法隱式的創(chuàng)建數(shù)組對象。如:
int[] a = {1,2,3};
上面語句聲明并實例化了一個整型數(shù)組,長度為3,元素的值就是{}中的3個整數(shù)。
String[] values={"my","name","is"};
上面語句聲明并實例化了一個字符串數(shù)組,長度為3,元素的值就是{}中的3個字符串。
通過這種方式,定義的數(shù)組,我們后面可以改變元素值,但不能改變數(shù)組的長度,如:
int[] a = {1,2,3};
a[2]=5; //合法的,將第3個元素的值由初始值3改為5
a[3]=1; //運行時拋數(shù)組越界異常
數(shù)組的初始化
對于通過new操作符創(chuàng)建的數(shù)組對象,創(chuàng)建后,在沒有給其中的數(shù)組元素賦值前,系統(tǒng)會自動根據(jù)數(shù)組類型給其中的數(shù)組元素一個默認值。
如下面表格:
| 數(shù)組類型 | 元素默認值 | 例子 |
|---|---|---|
| byte,short,int,long | 0 | int[] a = new int[10]; |
| float , double | 0.0 | float[] a = new float[10]; |
| char | 0 | char[] a = new char[10]; |
| boolean | false | boolean[] a = new boolean[10]; |
| 對象類型 | null | String[] strs = new String[10]; |
數(shù)組元素的訪問
java中數(shù)組是一個有序的、有長度限制的數(shù)據(jù)集合??梢酝ㄟ^下標獲取或設置數(shù)組中的元素值,注意下標是從0開始,下標的最大值為數(shù)組長度減1;如果下標越界,運行時會報ArrayIndexOutOfBoundsException異常。文章開頭的例子已經(jīng)演示了如何使用。
另外數(shù)組的長度可以通過其length屬性獲取,如:
public void show(int[] a){
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
}
上面代碼用數(shù)組的length屬性獲取了數(shù)組的長度,利用數(shù)組下標的方式循環(huán)獲取每個元素的值。
除了上述常規(guī)的利用數(shù)組下標獲取元素值外,在需要遍歷數(shù)組的每個元素值時,利用for循環(huán)的另外一種使用方式(一般稱為for -each方式)會更加簡單。代碼如:
public void show(int[] a){
for(int value:a){
System.out.println(value);
}
}
其語法格式就是 for(數(shù)據(jù)類型 元素變量名 : 數(shù)組變量) 。可以看出,這種遍歷方式的代碼更加簡潔和方便,而且不易出錯。
空數(shù)組
最后我們介紹下空數(shù)組,空數(shù)組指該數(shù)組的元素個數(shù)為0。但需要強調(diào)的是,空數(shù)組仍然是個java對象,它與null不同。
創(chuàng)建空數(shù)組的方式如:
int[] a = new int[0];
注意長度必須填0,不能這樣寫:int[] a = new int[ ]; 這樣編譯無法通過。
對于空數(shù)組,調(diào)用length屬性,獲取的值為0。用for-each去遍歷空數(shù)組,是完全沒問題的,只不過不會進入循環(huán)罷了。如:
public void show(){
int[] a = new int[0];
System.out.println(a.length); //輸出為0
for(int value:a){ //不會進入循環(huán)
System.out.println(value);
}
}
小結(jié)
本篇文章,我們詳細介紹了數(shù)組的概念和使用。對于java數(shù)組,需要牢記如下幾點:
(1)數(shù)組是對象類型,不是簡單類型。
(2)數(shù)組是有長度的,而且數(shù)組對象創(chuàng)建后長度不能改變。
(3)根據(jù)下標取數(shù)組元素時,第一個元素的下標為0
下一篇文章我們將介紹多維數(shù)組的概念和使用。