qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          Java中的length字段和length()方法

           首先,你能快速回答下面的問題嗎?
            如果沒有IDE(集成開發(fā)環(huán)境)的自動補全功能,如何獲取數(shù)組和字符串的長度?
            我問了不同等級的開發(fā)者(初級和中級)同樣的問題,他們很難準(zhǔn)確而確信地給出答案。雖然IDE提供的代碼自動補全功能十分方便,但也帶來了“表面理解(surface understanding)”的問題。在本文中,我會解釋一些和Java數(shù)組的關(guān)鍵概念。
            上述問題的答案如下:
          int[] arr = new int[3];
          System.out.println(arr.length);//數(shù)組的length屬性
          String str = "abc";
          System.out.println(str.length());//字符串的length()方法
            現(xiàn)在的問題是,為什么數(shù)組有l(wèi)ength屬性而字符串沒有?或者,為什么字符串有l(wèi)ength()方法而數(shù)組沒有?
            問題1. 為什么數(shù)組有l(wèi)ength屬性?
            首先,數(shù)組是一個容器對象,它保存了一定數(shù)量的某一類型的值。當(dāng)一個數(shù)組被創(chuàng)建出來后,它的長度就不會再改變了。數(shù)組的長度可視作一個final實例變量。因此,長度可被認(rèn)為是數(shù)組定義的一個屬性。
            創(chuàng)建數(shù)組有兩種方式:1)數(shù)組創(chuàng)建表達(dá)式;2)數(shù)組初始化。一旦數(shù)組被創(chuàng)建,它的長度就固定了。
            下面的數(shù)組聲明雖然只指明了數(shù)組中第一維的長度,但它是合法的。
          int[][] arr = new int[3][];
            數(shù)組的初始化創(chuàng)建了一個數(shù)組并為其中的每個元素賦上初始值,它是由一個被“{”和“}”包圍的用逗號分隔的若干表達(dá)式構(gòu)成,示例如下:
          int[] arr = {1, 2, 3};
            問題2. 為什么沒有一個像“String”一樣定義的“Array"類?
            因為數(shù)組是一個對象,所以下面的代碼是合法的。
          Object obj = new int[10];
            數(shù)組包含了Object類中的所有成員(除了clone)。為什么不能像定義一個類那樣定義數(shù)組呢?我們找不到一個Array.java文件。一種比較簡單的解釋是:它們被掩藏了。你可考慮一下這個問題:如果有一個數(shù)組類,那么它該是什么樣的?我們還是需要一個數(shù)組來保存數(shù)組數(shù)據(jù),是不是?因此,定義一個這樣的類似很不明智的。
            事實上,我們可以通過下面的方式來獲取一個數(shù)組類:
          int[] arr = new int[3];
          System.out.println(arr.getClass());
            輸出的結(jié)果是:
          class[]
            ”class[]“是”int類型數(shù)組“類對象的運行時類型簽名。
            問題3. 為什么字符串有l(wèi)ength()方法?
            字符串中保存字符數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)是一個字符數(shù)組。因此,沒有必要定義一個在實際應(yīng)用中不必須的字段。與C語言不通,在Java中,一個字符數(shù)組并不是一個字符串。

          posted on 2013-11-29 10:55 順其自然EVO 閱讀(213) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2013年11月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 项城市| 枣庄市| 平安县| 钟山县| 金堂县| 阳西县| 庆安县| 罗江县| 白河县| 临猗县| 西平县| 堆龙德庆县| 黎平县| 天峻县| 米脂县| 健康| 襄汾县| 东宁县| 东阿县| 庐江县| 姜堰市| 拜泉县| 教育| 麟游县| 安多县| 沂源县| 澎湖县| 习水县| 上思县| 苍南县| 同仁县| 宜阳县| 西乡县| 济南市| 会泽县| 定日县| 东乡| 惠安县| 桂林市| 乐山市| 富源县|