一、
- 數(shù)組的作用就是存儲(chǔ)一組數(shù)據(jù)
- 數(shù)組中存放的每個(gè)元素類型必須相同雏逾,所以每個(gè)元素所占用的內(nèi)存大小也一致。
- 在java中郑临,初始化數(shù)組時(shí)必須指定數(shù)組的長(zhǎng)度栖博,且一旦指定,長(zhǎng)度就不能改變厢洞,除非在重新初始化該數(shù)組仇让。
4.數(shù)組中的值通過(guò)數(shù)組名和下標(biāo)組合起來(lái)進(jìn)行訪問
二、一維數(shù)組
1. 聲明
元素類型[] 數(shù)組名; //int[] a;
或
元素類型 數(shù)組名[]; //int a[];
- 注意:與C/C++不同躺翻,java不允許在聲明數(shù)組的方括號(hào)中指定元素的個(gè)數(shù)丧叽。如, int a[5];(x) 或 int[5] a;(x)
2. 一維數(shù)組的創(chuàng)建和使用
(1)說(shuō)明
① 要想真正使用數(shù)組還要為其分配內(nèi)存空間公你,即創(chuàng)建數(shù)組踊淳。
②為數(shù)組分配的內(nèi)存單元被稱為數(shù)組元素
③創(chuàng)建數(shù)組時(shí)必須指明數(shù)組的長(zhǎng)度
(2)格式
變量類型 數(shù)組變量;
數(shù)組變量 = new 數(shù)組元素類型[數(shù)組長(zhǎng)度];
等同于
數(shù)組變量類型 變量 = new 數(shù)組元素類型[數(shù)組長(zhǎng)度];
例如
int[] a = new int[5];
int[] b;
b = new int[5];
String[] c = new String[5];
double[] d = new double[5];
說(shuō)明:
創(chuàng)建一個(gè)長(zhǎng)度為5一維數(shù)組array[],系統(tǒng)將為每個(gè)元素分配空間并將數(shù)組元素默認(rèn)初始化為0陕靠,然后將數(shù)組對(duì)象的地址賦值給引用變量arr迂尝;
3. 數(shù)組對(duì)象的 length 屬性
數(shù)組一經(jīng)創(chuàng)建,其長(zhǎng)度就不可改變剪芥,數(shù)組元素的有效下標(biāo)范圍為0~n-1垄开,如果訪問數(shù)組元素時(shí)出現(xiàn)下標(biāo)越界的情況,程序?qū)⒊霈F(xiàn)運(yùn)行錯(cuò)誤税肪。
4. 數(shù)組的初始化
(1)靜態(tài)初始化
如:int[] a = {1,2,,3,4};
(2)動(dòng)態(tài)初始化
如:
int[] a = new int[3];
a[0] = 1;
a[1] = 2;
a[2] = 3;
a[3] = 4;
- 兩者完全等價(jià)
5. foreach語(yǔ)句
(1)作用:自動(dòng)迭代訪問每一個(gè)元素
(2)格式
for(循環(huán)變量數(shù)據(jù)類型 聲明循環(huán)變量 : 數(shù)組名){
}
- 聲明循環(huán)變量只是一個(gè)臨時(shí)變量溉躲,不能使用已經(jīng)聲明過(guò)的變量,也不用對(duì)其賦值寸认;這個(gè)臨時(shí)變量并不是數(shù)組元素签财,它只是保存了數(shù)組元素的值,因此偏塞,如果希望改變數(shù)組元素的值唱蒸,則就不能使用foreach循環(huán)。
如:
for(int i : arr) {
}
三灸叼、二維數(shù)組
1. 聲明
元素類型[][] 數(shù)組名; //int[][] a;
或
元素類型 數(shù)組名[][]; //int a[][];
- 上述語(yǔ)句只聲明了數(shù)組類型變量神汹,運(yùn)行時(shí)系統(tǒng)將只為這些引用變量分配引用空間,并沒有創(chuàng)建對(duì)象古今,也不會(huì)為數(shù)組元素分配空間屁魏,因此尚不能使用·任何數(shù)組元素。
2. 初始化
(1)靜態(tài)初始化
數(shù)組元素類型 數(shù)組名[][] ={ {第0行初值},{第1行初值}....}
如:int[][] arr = {{1,2,3},{5,6,7}}
(2)動(dòng)態(tài)初始化
① 直接為每一維分配空間
格式:數(shù)組元素類型 數(shù)組名[][] = new 數(shù)組元素類型[行數(shù)][列數(shù)]
如:
int int[][] arr = new int[2][3];
arr[0][0] =1;
arr[0][1] =2;
arr[0][2] =3;
arr[1][0] =5;
arr[1][1] =6;
arr[1][2] =7;
或
②從最高維開始(必須從最高維開始)捉腥,分別為每一維分配空間氓拼。
如:
int int[][] arr = new int[2][];
arr[0] = new int[3];
arr[1] = new int[3];
arr[0][0] =1;
arr[0][1] =2;
arr[0][2] =3;
arr[1][0] =5;
arr[1][1] =6;
arr[1][2] =7;
3. 二維數(shù)組的訪問
for(int i=0 ; i<arr.length ; i++) {
for(int j=0 ; j<arr[i].length ; j++) {
System.out.println(arr[i][j]);
}
}
四、Arrays 類
java.util.Arrays 類能方便地操作數(shù)組,它提供的所有方法都是靜態(tài)的桃漾。
具有以下功能:
(1)給數(shù)組賦值:通過(guò) fill 方法坏匪。
(2)對(duì)數(shù)組排序:通過(guò) sort 方法,按升序,如果是String類型元素則是按照單詞(字母)字典順序進(jìn)行升序排列的撬统。
(3)比較數(shù)組:通過(guò) equals 方法比較數(shù)組中元素值是否相等适滓。
(4)查找數(shù)組元素:通過(guò) binarySearch 方法能對(duì)排序好的數(shù)組進(jìn)行二分查找法操作。
- 一維數(shù)組排序
package excise;
import java.util.Arrays;
public class TestArraySort {
public static void main(String args[]) {
int[] a = {1,6,4,3,2,5};
System.out.println("排序前: ");
displayIntArr(a);
System.out.println();
Arrays.sort(a);
System.out.println("排序后: ");
displayIntArr(a);
System.out.println();
System.out.println();
String[] name = {"Tom","Kitty","葫蘆娃","Jerry","Eve"};
System.out.println("排序前: ");
displayIntArr(name);
System.out.println();
Arrays.sort(name);
System.out.println("排序后: ");
displayIntArr(name);
}
private static void displayIntArr(int[] a) {
// TODO Auto-generated method stub
for(int i: a) {
System.out.print(i+"\t");
}
}
public static void displayIntArr(String[] name) {
for(String i: name) {
System.out.print(i+"\t");
}
}
}