2017年計(jì)算機(jī)二級(jí)考試java章節(jié)輔導(dǎo):一維數(shù)組的初始化

字號(hào):


    5.1.2 一維數(shù)組的初始化
    我們知道,只聲明了數(shù)組,這時(shí)候其值為null,要想使用數(shù)組,還需要做初始化工作。數(shù)組初始化為聲明的數(shù)組指定數(shù)組元素個(gè)數(shù),為數(shù)組元素分配空間并賦值。數(shù)組初始化可以通過如下幾種方式完成。
    1.直接指定初值的方式
    用直接指定初值的方式初始化數(shù)組是指在聲明數(shù)組的同時(shí)將數(shù)組元素的初值依次寫入賦值號(hào)(=)后的一對(duì)大括號(hào)({})內(nèi),同時(shí),根據(jù) 值的個(gè)數(shù)確定數(shù)組元素的個(gè)數(shù),為它分配足夠的存儲(chǔ)空間并將這些值寫入相應(yīng)存儲(chǔ)的存儲(chǔ)單元。
    如:
    Char a[] = {‘N’,’C’,’E’,’P’,’U’};
    從該語句可以得到信息:該數(shù)組名為a,數(shù)組元素的數(shù)據(jù)類型為char,每個(gè)元素占用2個(gè)字節(jié)的存儲(chǔ)空間,大括號(hào)中共有5個(gè)值,因此數(shù)組元素的個(gè)數(shù)為5,系統(tǒng)會(huì)為該數(shù)組分配2*5=10個(gè)字節(jié)的連續(xù)存儲(chǔ)空間。經(jīng)過數(shù)組初始化后,a數(shù)組的5個(gè)元素值分配情況為:a[0]=’N’, a[1]=’C’,a[2]=’E’,a[3]=’P’,a[4]=’U’。
    在java中,數(shù)組的下標(biāo)是從0開始的,因此對(duì)于含有n個(gè)元素的數(shù)組a來說,其最小下標(biāo)為0,下標(biāo)為n-1,而不是n。
    2. 用new關(guān)鍵字初始化數(shù)組
    用關(guān)鍵字new初始化數(shù)組時(shí),除了為數(shù)組指定數(shù)組元素個(gè)數(shù)、分配存儲(chǔ)空間外,還會(huì)為數(shù)組元素按照數(shù)據(jù)類型的不同賦初值。具體如下:
    若為數(shù)值型,數(shù)組元素的默認(rèn)值為0,;
    若為布爾型,數(shù)組元素的默認(rèn)值為false;
    若為引用型,數(shù)組元素的默認(rèn)值為空(null)。
    (1) 先聲明數(shù)組,再初始化數(shù)組。這里實(shí)際上是兩條語句,具體格式如下:
    數(shù)據(jù)類型[] 數(shù)組名; 或數(shù)據(jù)類型 數(shù)組名[];
    數(shù)組名=new 數(shù)據(jù)類型[數(shù)組長(zhǎng)度];
    第一條語句是數(shù)組聲明語句,第二條語句則是初始化語句。需要注意的是這兩條語句中數(shù)組名、數(shù)據(jù)類型必須一致,否者會(huì)產(chǎn)生錯(cuò)誤或意想不到的結(jié)果。
    數(shù)組的長(zhǎng)度可以是直接的int類型常數(shù),也可以是已經(jīng)賦值的int類型變量或int類型表達(dá)式。
    例如:
    Int n=10;
    Int[] a;
    a = new int[n];
    這樣,在創(chuàng)建數(shù)組時(shí)提供了一定的靈活性,可以在程序中根據(jù)變量n的大小動(dòng)態(tài)創(chuàng)建數(shù)組,需要注意的是,雖然n是變量,但根據(jù)n的值創(chuàng)建的數(shù)組一旦創(chuàng)建,數(shù)組的長(zhǎng)度就固定下來了,不在允許修改。
    上面的語句中a數(shù)組中含有10個(gè)元素,初始化工作會(huì)使數(shù)組中的10個(gè)元素根據(jù)不同數(shù)據(jù)類型被賦以初值,因?yàn)檫@里是int,所以,10個(gè)元素的初值為0。
    (2)在聲明數(shù)組的同時(shí)用new關(guān)鍵字初始化數(shù)組。實(shí)際上,這種方式是將第一種方式的兩條語句合并為一條語句。格式如下:
    數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[數(shù)組長(zhǎng)度];
    或
    數(shù)據(jù)類型 數(shù)組名[] = new 數(shù)據(jù)類型[數(shù)組長(zhǎng)度]
    例如:
    Int n=10;
    Int[] a = new int[n];
    (3) 用一個(gè)已經(jīng)初始化的數(shù)組對(duì)數(shù)組初始化
    除了上述兩種形式的初始化外,還可以直接使用一個(gè)已經(jīng)初始化的數(shù)組對(duì)新聲明的數(shù)組進(jìn)行初始化。
    格式如下:
    數(shù)據(jù)類型[] 數(shù)組名=已初始化數(shù)組
    例如:
    Int[]a=new int[10];
    Int[]b=a;
    這種初始化會(huì)使得數(shù)組a與b具有相同的存儲(chǔ)地址,即,a數(shù)組與b數(shù)組指向了同一個(gè)物理地址,任何對(duì)數(shù)組a的改變都會(huì)使數(shù)組b做相應(yīng)的修改,同樣,任何對(duì)數(shù)組b的修改也會(huì)使a數(shù)組的內(nèi)容發(fā)生變化。
    要想驗(yàn)證上述觀點(diǎn)可以使用java的輸出語句System.out.println(數(shù)組名)的方式來查看:
    System.out.println(a);
    System.out.println(b);
    的輸出結(jié)果是否相同,這里輸出的是地址,如果相同表明數(shù)組a和b的地址相同,即它們實(shí)際上是一個(gè)數(shù)組的兩種表現(xiàn)形式。
    3.混合方式
    有時(shí)候,數(shù)組的初始化可以綜合上面兩種方式進(jìn)行,如下語句
    int[] a = new int[]{1,2,3,4};
    同樣可達(dá)到初始化的目的,這是一種常用的初始化方式,在今后的學(xué)習(xí)中讀者還會(huì)見到。