數(shù)組對(duì)于每一門(mén)編程語(yǔ)言來(lái)說(shuō)都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當(dāng)然不同語(yǔ)言對(duì)數(shù)組的實(shí)現(xiàn)及處理也不盡相同。
Java語(yǔ)言中提供的數(shù)組是用來(lái)存儲(chǔ)固定大小的同類型元素。
聲明數(shù)組變量
結(jié)構(gòu):
1. 數(shù)組類型 [] 數(shù)組名; 或 dateType [] arrayName; (推薦方式)
eg: double [] doubleArr;
2.數(shù)組類型 數(shù)組名 []; 或 dateType arrayName [];
eg: double doubleArr [];
創(chuàng)建數(shù)組
結(jié)構(gòu):
arrayName = new dateType[arraySize];
上面的語(yǔ)法語(yǔ)句做了兩件事:
- 使用dataType[arraySize]創(chuàng)建了一個(gè)數(shù)組。
- 把新創(chuàng)建的數(shù)組的引用賦值給變量 arrayRefVar。
數(shù)組變量的聲明,和創(chuàng)建數(shù)組可以用一條語(yǔ)句完成:
1.dataType[] arrayName = new dataType[arraySize];
2.dataType[] arrayRefVar = {value0, value1, ..., valued};
實(shí)例:
int [] intArr; //聲明數(shù)組
intArr = new int[10]; //創(chuàng)建數(shù)組
int [] intArr1 = new int[10]; //聲明并創(chuàng)建數(shù)組
intArr[0] = 1; //賦值
int [] intArr2 = {1,2,3,4,5,6,7,8,9,0}; //聲明并創(chuàng)建數(shù)組
System.out.println(intArr[0]); //打印數(shù)組元素
System.out.println(intArr1[0]);
System.out.println(intArr2[0]);
處理數(shù)組
數(shù)組的元素類型和數(shù)組的大小都是確定的,所以當(dāng)處理數(shù)組元素時(shí)候,我們通常使用基本循環(huán)或者foreach循環(huán)。
實(shí)例:
//for 循環(huán)打印數(shù)組元素
int [] intArr2 = {1,2,3,4,5,6,7,8,9,0}; //聲明并創(chuàng)建數(shù)組
for (int i = 0; i < intArr2.length; i ++){
System.out.println(intArr2[i]);
}
//采用數(shù)組遍歷的方式打印數(shù)組元素
for (int i :
intArr2) {
System.out.println(i);
}
數(shù)組作為函數(shù)的參數(shù)
數(shù)組可以作為參數(shù)傳遞給方法。
package com.company;
public class Main {
public static void main(String[] args) {
int [] intArr2 = {1,2,3,4,5,6,7,8,9,0}; //聲明并創(chuàng)建數(shù)組
Main main = new Main();
main.Print(intArr2);
}
//負(fù)責(zé)打印數(shù)組的方法
public void Print(int[] arr){
for (int i = 0; i < arr.length; i ++){
System.out.println("方法里面打印的 :" + arr[i]);
}
}
}
數(shù)組作為函數(shù)的返回值
實(shí)例:
package com.company;public class Main {
public static void main(String[] args) {
Main main = new Main();
int [] intAr = main.GetArr();
for (int i :
intAr) {
System.out.println("打印函數(shù)里面?zhèn)骰氐臄?shù)組" + i);
}
}
//數(shù)組作為返回值得函數(shù)
public int[] GetArr(){
int [] arr = {1,2,3,4,5,6,78,8,9};
return arr;
}
}
Array類
java.util.Arrays類能方便地操作數(shù)組,它提供的所有方法都是靜態(tài)的。具有以下功能:
- 給數(shù)組賦值:通過(guò)fill方法。
- 對(duì)數(shù)組排序:通過(guò)sort方法,按升序。
- 比較數(shù)組:通過(guò)equals方法比較數(shù)組中元素值是否相等。
- 查找數(shù)組元素:通過(guò)binarySearch方法能對(duì)排序好的數(shù)組進(jìn)行二分查找法操作。
1.public static int binarySearch(Object[] a, Object key)
用二分查找算法在給定數(shù)組中搜索給定值的對(duì)象(Byte,Int,double等)。數(shù)組在調(diào)用前必須排序好的。如果查找值包含在數(shù)組中,則返回搜索鍵的索引;否則返回 (-(插入點(diǎn)) - 1)。
int [] arr = {1,2,3,4,5,6,7,8,9};
int i = Arrays.binarySearch(arr,2); //返回?cái)?shù)組元素的索引值
System.out.println(i);
2.public static boolean equals(long[] a, long[] a2)
如果兩個(gè)指定的 long 型數(shù)組彼此相等,則返回 true。如果兩個(gè)數(shù)組包含相同數(shù)量的元素,并且兩個(gè)數(shù)組中的所有相應(yīng)元素對(duì)都是相等的,則認(rèn)為這兩個(gè)數(shù)組是相等的。換句話說(shuō),如果兩個(gè)數(shù)組以相同順序包含相同的元素,則兩個(gè)數(shù)組是相等的。同樣的方法適用于所有的其他基本數(shù)據(jù)類型(Byte,short,Int等)。
int [] arr = {1,2,3,4,5,6,7,8,9};
int [] arr1 = {1,2,3,4,5,6,7,8,9};
boolean b = Arrays.equals(arr,arr1);
System.out.println(b);
3.public static void fill(int[] a, int val)
將指定的 int 值分配給指定 int 型數(shù)組指定范圍中的每個(gè)元素。同樣的方法適用于所有的其他基本數(shù)據(jù)類型(Byte,short,Int等)。
int [] arr = {1,2,3,4,5,6,7,8,9};
Arrays.fill(arr,4);
for (int i :
arr) {
System.out.println(i);
}
4.public static void sort(Object[] a)
對(duì)指定對(duì)象數(shù)組根據(jù)其元素的自然順序進(jìn)行升序排列。同樣的方法適用于所有的其他基本數(shù)據(jù)類型(Byte,short,Int等)。
int [] arr = {3,2,5,6,2,4,1,8,4,2};
Arrays.sort(arr);
for (int i :
arr) {
System.out.println(i);
}