在java中數(shù)組的應(yīng)用的是必不可少的,數(shù)組在定義的時(shí)候必須聲明數(shù)組的大小,也就是數(shù)組的容量;在后續(xù)的程序中,數(shù)組的長(zhǎng)度是不可變的,意味著我們不能進(jìn)行add方法進(jìn)行擴(kuò)容,雖然不能進(jìn)行擴(kuò)容,但是另一方面也說(shuō)明,數(shù)組的查詢很快,根據(jù)下表值可以直接得到我們想要的值,下面就讓我們來(lái)具體認(rèn)識(shí)一下Java中的數(shù)組。
(1)數(shù)組是用來(lái)存放一組具有相同類型數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。
(2)通過(guò)整形的下標(biāo)訪問(wèn)數(shù)組中的每一個(gè)值(數(shù)組下標(biāo)從0開(kāi)始)
(3)數(shù)組的定義通過(guò)某種數(shù)據(jù)類型后面加上[]來(lái)定義,在此之后跟上變量名就可以定義相應(yīng)類型的數(shù)組變量
數(shù)組的定義
int[] a;或者int a[];這兩種方法的定義是等價(jià)的。在這里只定義了一個(gè)整形數(shù)組變量a;但是還沒(méi)有將a真正的初始化為一個(gè)數(shù)組。為將一個(gè)數(shù)組初始化可以使用new關(guān)鍵字,也可以使用賦值語(yǔ)句進(jìn)行初始化。數(shù)組一旦被創(chuàng)建,就不能再改變大小了
int a[] = new int[10];//將a初始化為10的整型數(shù)組
int[] b = {0,1,2,3};//將b初始化為大小為4的整形數(shù)組,并且4個(gè)分量的值分別等于0,1,2,3
在本篇的開(kāi)始我們就說(shuō)了,數(shù)組的下標(biāo)是從0開(kāi)始的,那么數(shù)組最后一位的下標(biāo)就是數(shù)組的大小減1結(jié)束。如果在Java中超過(guò)下標(biāo)去訪問(wèn)數(shù)據(jù),那么java編譯器就會(huì)出現(xiàn)數(shù)組越界的錯(cuò)誤(ArrayIndexOutOfBoundsException)。一般我們?yōu)榱吮苊膺@個(gè)錯(cuò)誤,通常我們會(huì)用length的方法來(lái)獲取數(shù)組的長(zhǎng)度,進(jìn)行校驗(yàn),防止數(shù)組越界的訪問(wèn)。
數(shù)組在java中是一個(gè)類,因此兩個(gè)數(shù)組變量可以指向同一個(gè)數(shù)組。我們來(lái)看一下下面的這段代碼,我們預(yù)測(cè)一下運(yùn)行的結(jié)果。
public class ShuzuTest {
public static void main(String[] str) {
int[] a = {1,1,1,};
int[] b = a;
for(int i = 0;i < b.length;i++) {
b[i]++;
}
for(int i = 0;i < a.length;i++) {
System.out.println(a[i]);
}
}
}
10秒鐘時(shí)間。。。。。
剛才我們說(shuō)了,兩個(gè)數(shù)組變量可以指向同一個(gè)數(shù)組,int[] = a;這句代碼,其實(shí)不是賦值給b,而是另b也指向了a的數(shù)組空間。所以在我們對(duì)b進(jìn)行操作的時(shí)候,也是對(duì)a進(jìn)行了操作。

數(shù)組作為參數(shù)
同樣當(dāng)數(shù)組作為方法的參數(shù)傳遞的時(shí)候,也是傳遞的對(duì)于數(shù)組的應(yīng)用,因此在方法中對(duì)數(shù)組進(jìn)行的操作會(huì)影響到原來(lái)的數(shù)組。此處不做過(guò)多的贅述了,有問(wèn)題的歡迎私信!