qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

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

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

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


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


          網站導航:
           
          <2013年11月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 襄垣县| 惠安县| 临汾市| 临邑县| 青海省| 大同县| 郸城县| 昌黎县| 大竹县| 南溪县| 满洲里市| 公主岭市| 元氏县| 永新县| 庆城县| 伊金霍洛旗| 东平县| 锦屏县| 武冈市| 雷州市| 南漳县| 道孚县| 安吉县| 五原县| 抚宁县| 团风县| 靖边县| 松江区| 无锡市| 临漳县| 锡林浩特市| 潜江市| 灌阳县| 东平县| 油尖旺区| 浏阳市| 瑞安市| 花莲市| 牡丹江市| 连云港市| 宁陵县|