數組初始化
定義數組文法格式
定義數組有兩種方式,如下兩種格式是等價的:
int[] a1;
int a1[];
注:在C/C++中,不支援第一種格式。但是,推薦使用這種方式,因為這樣似乎更合理,聲明了一個整型數組類型的變量,名字為a1。
數組大小
JAVA中,數組不允許在方括号中指定次元(即在方括号中指定數字來限制數組大小)。那麼,如何限定數組的大小呢?有以下兩種方式:
●使用初始化清單
int[] array = {1, 2, 3, 4, 5, };
注:初始化清單的最後一個逗号是可選的(這一特性使維護長清單變得更容易)。
對象數組
基本類型數組就是指儲存的資料類型為基本類型的數組,如int、long、double等。
對象數組是指儲存的資料類型為非基本類型的數組,如一些内置類或自定義類等。
對象數組和基本類型數組在使用上幾乎是相同的;唯一差別就是對象數組儲存的是引用,而基本類型數組直接儲存的是基本類型的值。
如下代碼中,聲明一個自定義類apple類型的數組。如果在數組的各元素還未初始化時就引用這些元素,運作時會報錯(代碼注釋處)。
class Apple {
}
Apple[] apples;
apples = new Apple[3];
//System.out.println(apples[0].toString());
for (int i = 0; i < 3; i++)
apples[i] = new Apple();
System.out.println(apples[0].toString());
使用new int[]
int[] array;
array = new int[5]; //配置設定一個含有5個int型元素大小的數組,所有元素自動初始化為0
數組指派
不同于C/C++,在JAVA中,允許将一個數組整體指派給另一個數組。如下:
int[] array = {1, 2, 3, 4, 5,};
int[] array2;
array2 = array;
for (int i = 0; i < array2.length; i++) {
array2[i] = array2[i] + 1; //給數組元素指派
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
運作結果:
2 3 4 5 6
這裡,其實是複制了一個引用。當array的引用複制給array2後,再對array2進行修改實際上等同于修改array。是以兩個數組的值同時發生改變。
注:和C/C++一樣,JAVA數組計數也是從第0個元素開始,是以下标最大值為length-1。如果超出邊界,編譯器會提示錯誤。
數組的特點
數組是一種效率最高的存儲和随機通路對象引用序列的方式。
如果和現在廣泛使用的容器相比較,它的優點在于通路效率比較高,缺點在于大小固定,沒有容器的大小伸縮性。
Arrays實用功能
在 java.util.Arrays 類中提供了一套用于數組的static實用方法。以下介紹幾個常用的基本方法:
方法名 | 作用 |
equals | 比較兩個數組是否相等,deepEquals用于多元數組 |
fill | 用同一個值填充各個位置。 |
sort | 對數組排序 |
binarySearch | 用于已經排序的數組中查找元素 |
toString | 産生數組的String表示 |
hashCode | 産生數組的散列碼 |