Java 快速導覽 - 陣列

陣列 (array) 是 Java 裡可用來裝固定大小、相同資料型態 (data type) 的容器 (container) ,也可以說陣列是一種同質資料結構 (data structure) 。



陣列的宣告與建立很簡單,例如,以下的程式碼宣告建立一個整數陣列的參考變數 intArray
int[] intArray = {33, 44, 55};


intArray 內有 33 、 44 、 55 三個整數。陣列的索引是從 0 開始,所以可用
int a = intArray[0];


使變數 a 得到 33 的整數值。


以下程式示範計算整數陣列中所有整數的平均值
class Array1Demo {
    public static void main(String[] args) {
        int[] intArray = {12, 33, 65, 32, 11, 76, 98, 23, 55, 34, 76, 81, 54};
        double sum = 0.0;
        double average;
        
        for (int item : intArray) {
            sum += item;
        }
        
        average = sum / intArray.length;
        System.out.println(average);
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:Array1Demo.java
    功能:示範物件導向的基本觀念 
    作者:張凱慶
    時間:西元 2010 年 10 月 
    修改:西元 2013 年  4 月*/


編譯後執行,結果如下



若要新建一個備用的陣列,需要用到陣列的建構子 (constructor) ,如
char[] copyArray = new char[5];


這便建立一個長度為 5 字元陣列 copyArray ,此陣列中每個元素 (element) 會被初始化給 '\0' ,也是是字元型態的 0 。


以下程式示範利用 System 類別的 arraycopy() 拷貝字元陣列
class Array2Demo {
    public static void main(String[] args) {
        char[] charArray = {'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '!'};
        char[] copyArray = new char[5]; 

        System.arraycopy(charArray, 6, copyArray, 0, 5);
        System.out.println(copyArray);
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:Array2Demo.java
    功能:示範物件導向的基本觀念 
    作者:張凱慶
    時間:西元 2010 年 10 月 */


編譯後執行,結果如下



第 6 行
System.arraycopy(charArray, 6, copyArray, 0, 5);


arraycopy() 需要 5 個參數,這個方法的宣告如下
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)


src 表示來源陣列, srcPos 為起始索引值, dest 為所要複製到的陣列, destPos 為複製陣列的目標起始位址, length 為所要複製的長度,也就是元素個數。


中英文術語對照
陣列array
資料型態data type
容器container
資料結構data structure
建構子constructor
元素element






2013 年 4 月改正

5 則留言:

symis 提到...

此陣列中每個元素 (element) 會被初始化給 '\0' ,也是是字元型態的 0
→ 可是上面的
char[] copyArray = new char[5];
是char耶,不是int,怎麼會是0呢?
我查到
http://mis.hwai.edu.tw/~kevin/MISProject/JAVAProject/chapter4/c4-2.htm
寫,字元型態的初始值,是"\u0000"
對嗎?

Kaiching Chang 提到...

'\0' 與 '\u0000' 就是相同的字元唷,另外雙引號是字串不是字元。

Kaiching Chang 提到...

這裡講 0 是一種比喻的方式,像是整數的 0 ,並不代表 '\0' 是整數 0 。

badboy99 提到...

計算整數平均值的例子中,i的初始值是否該設為0?

Kaiching Chang 提到...

這個範例寫錯了,已修改,感謝指正 :)