Java數(shù)組
數(shù)組對于每一門編程語言來說都是重要的數(shù)據(jù)結(jié)構(gòu)之一巧勤,當(dāng)然不同語言對數(shù)組的實(shí)現(xiàn)及處理也不盡相同悄蕾。Java語言中提供的數(shù)組是用來存儲固定大小的同類型元素票顾。
聲明數(shù)組變量
首先必須聲明數(shù)組變量,才能在程序中使用數(shù)組帆调。下面是聲明數(shù)組變量的語法:
dataType[] arrayRefVar; // 首選的方法
dataType arrayRefVar[]; // 效果相同奠骄,但不是首選方法
注意:建議使用 dataType[] arrRefVar 的聲明風(fēng)格聲明數(shù)組變量。 dataType arrayRefVar[] 風(fēng)格是來自 C/C++ 語言 番刊,在Java中采用是為了讓 C/C++ 程序員能夠快速理解java語言含鳞。
創(chuàng)建數(shù)組
Java語言使用new操作符來創(chuàng)建數(shù)組,語法如下:
arrayRefVar = new dataType[arraySize];
上面的語法語句做了兩件事情:
- 使用dataType[arraySize]創(chuàng)建了一個數(shù)組
- 把新創(chuàng)建的數(shù)組的引用賦值給變量arrRefVar
數(shù)組變量的聲明芹务,和創(chuàng)建數(shù)組可以用一條語句完成民晒,如下所示:
dataType arrRefVar = new dataType[arraysize];
數(shù)組的元素是通過索引訪問的。數(shù)組索引從0開始锄禽,所以索引值從0到arrRefVar.length -1潜必。
處理數(shù)組
數(shù)組的元素類型和數(shù)組的大小都是確定的,所以當(dāng)處理數(shù)組元素時候沃但,我們通常使用基本循環(huán)或者foreach循環(huán)磁滚。
實(shí)例展示了創(chuàng)建,初始化和操縱數(shù)組:
public class TestArray {
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5};
// 打印所有數(shù)組元素
for (int i = 0; i < myList.length; i++) {
System.out.println(myList[i] + " ");
}
// 計(jì)算所有元素的總和
double total = 0;
for (int i = 0; i < myList.length; i++) {
total += myList[i];
}
System.out.println("Total is " + total);
// 查找最大元素
double max = myList[0];
for (int i = 1; i < myList.length; i++) {
if (myList[i] > max) max = myList[i];
}
System.out.println("Max is " + max);
}
}
數(shù)組作為函數(shù)的參數(shù)
數(shù)組可以作為參數(shù)傳遞給方法宵晚。
public static void printArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
數(shù)組作為函數(shù)的返回值
public static int[] reverse(int[] list) {
int[] result = new int[list.length];
for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
result[j] = list[i];
}
return result;
}
Array 類
java.util.Arrays類能方便地操作數(shù)組垂攘,它提供地所有方法都是靜態(tài)地。具有以下功能:
- 給數(shù)組賦值:通過fill方法淤刃。
- 對數(shù)組排序:通過sort方法晒他,按升序。
- 比較數(shù)組:通過equals方法比較數(shù)組中元素值是否相等逸贾。
- 查找數(shù)組元素:通過binarySearch方法對排序好的數(shù)組進(jìn)行二分查找法操作陨仅。
序號 | 方法及說明 |
---|---|
1 | public static int binarySearch(Object[] a, Object key) 用二分查找算法在給定數(shù)組中搜索給定值的對象(Byte,Int,double等)。數(shù)組在調(diào)用前必須排序好的铝侵。如果查找值包含在數(shù)組中灼伤,則返回搜索鍵的索引;否則返回 (-(插入點(diǎn)) - 1)咪鲜。 |
2 | public static boolean equals(long[] a, long[] a2)如果兩個指定的 long 型數(shù)組彼此相等狐赡,則返回 true。如果兩個數(shù)組包含相同數(shù)量的元素疟丙,并且兩個數(shù)組中的所有相應(yīng)元素對都是相等的颖侄,則認(rèn)為這兩個數(shù)組是相等的鸟雏。換句話說,如果兩個數(shù)組以相同順序包含相同的元素览祖,則兩個數(shù)組是相等的崔慧。同樣的方法適用于所有的其他基本數(shù)據(jù)類型(Byte,short穴墅,Int等)惶室。 |
3 | public static void fill(int[] a, int val)將指定的 int 值分配給指定 int 型數(shù)組指定范圍中的每個元素。同樣的方法適用于所有的其他基本數(shù)據(jù)類型(Byte玄货,short皇钞,Int等)。 |
4 | public static void sort(Object[] a)對指定對象數(shù)組根據(jù)其元素的自然順序進(jìn)行升序排列松捉。同樣的方法適用于所有的其他基本數(shù)據(jù)類型(Byte夹界,short,Int等)隘世。 |