必須先宣告陣列後配置記憶體位置給陣列。
資料型態 陣列名稱[];
陣列名稱=new 資料型態[數量];
int score[]; //宣告整數陣列score
score=new int[5]; //使陣列score 可存放5個整數的記憶體空間
也可以合併再一起
資料型態 陣列名稱[]=new 資料型態[數量];
int score[] = new int[3];
記憶體配置:
int score[ ]; 還有另外的宣告方式:
int[] score;//這種宣告方式較常見
int []score;
定義陣列時不能指定陣列長度,因為宣告後,僅定義了一個參照變數,還未指向任何有效的記憶體,沒有記憶體來儲存陣列元素,這時候陣列也不可以使用,只有初始化後才可以使用。
陣列名稱 = new 資料型態[]{元素1,元素2,元素3....};
public class ArrayDemo01 {
public static void main(String[] args) {
//同類型不指定陣列長度
int[] intArray = new int[]{10, 20, 30};
//子類別
Object[] objArr = new String[] {"小明", "小花"};
}
}
也可以宣告和初始化同時完成如下:
資料型態[] 陣列名稱 = {元素1,元素2,元素3....};
int[] a ={ 5, 6, 7, 8};
陣列名稱 = new 資料型態[長度];
宣告和初始化同時完成,使用動態初始化語法
int[] prices = new int[5];
Object[] books = new String[4];
陣列被初始化後,每個元素都會被初始化為該型態的初始值(default value)。
注意 : 不要同時使用靜態初始化和動態初始化,也就是說不要同時指定長度,和分配的初始值
對陣列賦值,和取出陣列元素
透過陣列名稱,利用中括號『[ ]』,括號裡面放元素在陣列中的索引值(index)。
陣列索引值從0開始,只能為非負整數。
int[] intArray = new int[]{10, 20, 30};
System.out.println("intArray[0]: " + intArray[0]);
/*執行結果
intArray[0]: 10
*/
如果存取元素指定的索引值小於0或是大於陣列長度,編譯程式不會出錯,但運行時會出現異常:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: N(試圖存取的索引)
int[] intArray = new int[]{10, 20, 30};
System.out.println("intArray[0]: " + intArray[5]);
/*執行結果
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at com.demo03.ArrayDemo01.main(ArrayDemo01.java:10)
*/
int[] intArray = new int[]{10, 20, 30};
System.out.println("陣列的長度: " + intArray.length);
/*執行結果
陣列的長度: 3
*/
可以利用迴圈取出陣列的值
int[] intArray = new int[]{10, 20, 30};
for(int i = 0; i < intArray.length; i++ ) {
System.out.println("陣列中的元素:" + intArray[i]);
}
/*執行結果
陣列中的元素:10
陣列中的元素:20
陣列中的元素:30
*/
for(資料類型 變數名稱 : 可迭代物件){
迴圈體
}
int[] intArray = new int[]{10, 20, 30};
for(int i = 0; i < intArray.length; i++ ) {
System.out.println("陣列中的元素:" + intArray[i]);
}
//等同於
for(int i : intArray) {
System.out.println("陣列中的元素:" + i);
}
/*執行結果
陣列中的元素:10
陣列中的元素:20
陣列中的元素:30
*/
注意:使用foreach 迴圈迭代陣列元素時,不能改變陣列元素的值,因此不要對foreach的迴圈變數進行賦值
今天就先到這邊,明天繼續partII~~~