Java語法總結(jié) - 數(shù)組

          Posted on 2007-10-21 13:01 Raylong 閱讀(4693) 評論(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ù)料的后果!


          返回索引頁


          Feedback

          # re: Java語法總結(jié) - 數(shù)組  回復(fù)  更多評論   

          2007-10-21 21:10 by 海邊沫沫
          我覺得博主的字體設(shè)置得不錯(cuò),讀起來蠻舒服。

          我這就改我的字體去

          # re: Java語法總結(jié) - 數(shù)組  回復(fù)  更多評論   

          2007-10-21 23:02 by Raylong
          @海邊沫沫
          我非常喜歡黑色!但是blogjava的主題選擇余地很小,好在他提供了自定義樣式,并且提供了強(qiáng)大的工具。這是我在原來基礎(chǔ)上DIY的,建議你嘗試一下。

          # re: Java語法總結(jié) - 數(shù)組  回復(fù)  更多評論   

          2011-10-28 10:50 by 程序員之家
          怎么增加數(shù)組的大小呢
          主站蜘蛛池模板: 东方市| 固镇县| 萝北县| 将乐县| 舒兰市| 潼关县| 西乌珠穆沁旗| 襄汾县| 舒城县| 益阳市| 仁寿县| 呼和浩特市| 景宁| 青州市| 永春县| 米易县| 伊宁县| 墨江| 浪卡子县| 敦煌市| 莎车县| 山阳县| 双牌县| 铜山县| 南华县| 松滋市| 孙吴县| 车险| 广宁县| 汤原县| 株洲县| 张家川| 盐亭县| 房山区| 沂源县| 祁东县| 佛冈县| 八宿县| 屏东市| 长治县| 宜丰县|