更新時間:2020-10-26 17:38:34 來源:動力節(jié)點 瀏覽1277次
我們都知道Java沒有像C++那樣的“集合”概念,因為Java中的所有東西都是對象,也就是我們所說的萬物皆可為對象。然而,數(shù)組是用于儲存多個相同類型數(shù)據(jù)的集合,看似是矛盾的,但Java確實有自己的數(shù)組,并且通過Java數(shù)組初始化來提供支持。
對于數(shù)組的聲明其實都沒多大問題,推薦的寫法是使用 數(shù)據(jù)類型 + [] + 數(shù)組名稱的方式,因為這種方式可以很清楚的表明這是某一種類型的數(shù)組。例如,聲明一整數(shù)類型的數(shù)組。
int[] a;
在數(shù)組問題中,其實出現(xiàn)問題最多的就是數(shù)組初始化。數(shù)組的初始化分為三種方式,希望看完了本文我們再遇到數(shù)組初始化問題的時候,問題能夠迎刃而解。根據(jù)我個人的理解,數(shù)組的初始化操作分為三種方式。
第一種:特殊初始化,不用new關(guān)鍵字完成,在數(shù)組聲明的同時完成初始化操作,也被稱其為靜態(tài)初始化。主要原因是因為采用這種初始化的方式,數(shù)組的存儲空間的分配是由編譯器完成的。
下面以整數(shù)數(shù)組初始化為例,完成一個靜態(tài)數(shù)組初始化:
int[] a = {1,2,3};
Integer[] b = {
new Integer(1),
new Integer(2),
//Autoboxing
};
可以看到,a獲得了一個初始值,而b沒有;b將在以后賦值----這種情況下是賦給另一個數(shù)組。所有數(shù)組都有一個本質(zhì)成員(無論它們是對象數(shù)組還是基本類型數(shù)組),可對其進行查詢—但不是改變,從而獲知數(shù)組內(nèi)包含了多少個元素。這個成員就是length。與C 和C++類似,由于Java 數(shù)組從元素0 開始計數(shù),所以能索引的最大元素編號是“l(fā)ength-1”。如超出邊界,C 和C++會“默默”地接受,并允許我們胡亂使用自己的內(nèi)存,這正是許多程序錯誤的根源。然而,Java 可保留我們這受這一問題的損害,方法是一旦超過邊界,就生成一個運行期錯誤(即一個“違例”)。當(dāng)然,由于需要檢查每個數(shù)組的訪問,所以會消耗一定的時間和多余的代碼量,而且沒有辦法把它關(guān)閉。這意味著數(shù)組訪問可能成為程序效率低下的重要原因——如果它們在關(guān)鍵的場合進行。但考慮到因特網(wǎng)訪問的安全,以及程序員的編程效率,Java 設(shè)計人員還是應(yīng)該把它看作是值得的。
第二種:先使用new關(guān)鍵字創(chuàng)建數(shù)組,然后再分別為數(shù)組中的元素賦值,完成初始化操作。(注:如果數(shù)組元素類型為基本數(shù)據(jù)類型,在完成new 操作之后,數(shù)組中的元素會自動初始化為空值,可以直接使用,但是數(shù)組元素為引用類型,在完成new操作之后,沒有給引用類型賦值,就直接使用數(shù)組中的元素,會產(chǎn)生運行時異常。)
下面還是以整數(shù)數(shù)組初始化為例2,完成數(shù)組初始化:
int[] a = new int[2]; //需要指定數(shù)組的長度
a[0] = 1;
a[1] = 2;
第三種:使用new關(guān)鍵字創(chuàng)建數(shù)組,同時為數(shù)組中的元素賦值,完成出事化操作。
int[] a = new int[]{1,2,3}; //與第二種方法不同,這里new不需要指定數(shù)組的長度,數(shù)組長度由其后的初始化操作確定
int[] b = new int[]{
new Integer(1),
new Integer(2),
3
};
以上就是Java數(shù)組初始化的相關(guān)內(nèi)容,想要學(xué)習(xí)更多的Java數(shù)組相關(guān)內(nèi)容,可以觀看本站的Java基礎(chǔ)教程,里面有對Java數(shù)組的全方位講解,從各種角度讓你徹底學(xué)會Java數(shù)組。