Posted on 2007-10-21 13:01
Raylong 閱讀(4682)
評論(3) 編輯 收藏 所屬分類:
Java語法總結(jié)
Java語法總結(jié) - 數(shù)組
數(shù)組(array)是相同類型變量的集合,可以使用共同的名字引用它。數(shù)組可被定義為任何類型,可以是一維或多維。數(shù)組中的一個(gè)特別要素是通過下標(biāo)來訪問它。數(shù)組提供了一種將有聯(lián)系的信息分組的便利方法。注意:如果你熟悉C/C++,請注意, Java數(shù)組的工作原理與它們不同。
1、數(shù)組不是集合,它只能保存同種類型的多個(gè)原始類型或者對象的引用。數(shù)組保存的僅僅是對象的引用,而不是對象本身。
2、數(shù)組本身就是對象,Java中對象是在堆中的,因此數(shù)組無論保存原始類型還是其他對象類型,數(shù)組對象本身是在堆中的。
3、數(shù)組聲明的兩種形式:一、int[] arr; 二、int arr[]; 推薦使用前者,這符合Sun的命名規(guī)范,而且容易了解到關(guān)鍵點(diǎn),這是一個(gè)int數(shù)組對象,而不是一個(gè)int原始類型。
4、在數(shù)組聲明中包含數(shù)組長度永遠(yuǎn)是不合法的!如:int[5] arr; 。因?yàn)椋暶鞯臅r(shí)候并沒有實(shí)例化任何對象,只有在實(shí)例化數(shù)組對象時(shí),JVM才分配空間,這時(shí)才與長度有關(guān)。
5、在數(shù)組構(gòu)造的時(shí)候必須指定長度,因?yàn)镴VM要知道需要在堆上分配多少空間。反例:int[] arr = new int[];
6、多維數(shù)組的聲明。int[][][] arr; 是三維int型數(shù)組。
7、一維數(shù)組的構(gòu)造。形如:String[] sa = new String[5]; 或者分成兩句:String[] sa; sa = new String[5];
8、原始類型數(shù)組元素的默認(rèn)值。對于原始類型數(shù)組,在用new構(gòu)造完成而沒有初始化時(shí),JVM自動(dòng)對其進(jìn)行初始化。默認(rèn)值:byte、short、 int、long--0 float--0.0f double--0.0 boolean--false char--'"u0000'。(無論該數(shù)組是成員變量還是局部變量)
9、對象類型數(shù)組中的引用被默認(rèn)初始化為null。如:Car[] myCar = new Car[10]; 相當(dāng)于從myCar[0]到myCar[9]都這樣被自動(dòng)初始化為myCar[i] = null;
10、對象類型的數(shù)組雖然被默認(rèn)初始化了,但是并沒有調(diào)用其構(gòu)造函數(shù)。也就是說:Car[] myCar = new Car[10];只創(chuàng)建了一個(gè)myCar數(shù)組對象!并沒有創(chuàng)建Car對象的任何實(shí)例!
11、多維數(shù)組的構(gòu)造。float[][] ratings = new float[9][]; 第一維的長度必須給出,其余的可以不寫,因?yàn)镴VM只需要知道賦給變量ratings的對象的長度。
12、數(shù)組索引的范圍。數(shù)組中各個(gè)元素的索引是從0開始的,到length-1。每個(gè)數(shù)組對象都有一個(gè)length屬性,它保存了該數(shù)組對象的長度。(注意和String對象的length()方法區(qū)分開來,這兩者沒有統(tǒng)一起來是很遺憾的。)
13、Java有數(shù)組下標(biāo)檢查,當(dāng)訪問超出索引范圍時(shí),將產(chǎn)生ArrayIndexOutOfBoundsException運(yùn)行時(shí)異常。注意,這種下標(biāo)檢查不是在編譯時(shí)刻進(jìn)行的,而是在運(yùn)行時(shí)!也就是說int[] arr = new int[10]; arr[100] = 100; 這么明顯的錯(cuò)誤可以通過編譯,但在運(yùn)行時(shí)拋出!Java的數(shù)組下標(biāo)檢查是需要額外開銷的,但是出于安全的權(quán)衡還是值得的,因?yàn)楹芏嗾Z言在使用數(shù)組時(shí)是不安全的,可以任意訪問自身內(nèi)存塊外的數(shù)組,編譯運(yùn)行都不會(huì)報(bào)錯(cuò),產(chǎn)生難以預(yù)料的后果!
返回索引頁