MDA/MDD/TDD/DDD/DDDDDDD
          posts - 536, comments - 111, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          java的static

          Posted on 2010-12-30 01:20 leekiang 閱讀(401) 評論(0)  編輯  收藏 所屬分類: java

          Static 的意義與實(shí)作方式

          ?

          Class(static) field :共用一塊記憶體
          class(static) method
          :共用一塊記憶體
          instance(
          static) field :隨著每個 instance 各有一塊記憶體
          instance (
          static) method :共用一塊記憶體
          ??? instance method
          為什么不是隨著每個 instance 占有一塊記憶體,反倒是共用一塊記憶體?其實(shí),讓每個 instance method 如同 instance field 一樣,隨著每個 instance 占有一塊記憶體,這么做當(dāng)然是可以的,只是 Java 編譯器和 JVM 都不這么做,因?yàn)樘速M(fèi)記憶體空間了。一個 field 少則占用一個 byte ,多則占用數(shù)百 Byte ,但是 method 少則數(shù)個 byte ,多則數(shù)百 Kilo Byte 。 Mehtod 耗費(fèi)的記憶體是 field 的數(shù)百倍,甚至數(shù)千倍,當(dāng)然是能共用就盡量共用,比較不會消耗記憶體。既然 JVM 讓一個 class 的所有 instance 共用相同的 instance method ,下面兩行程式碼在 instanceMethod() 內(nèi)部時,如何區(qū)分是 instance1 instance2 ?
          instance1.instanceMethod();
          instance2.instanceMethod();
          因?yàn)榫幾g器會幫我們在把 instance1 instance2 個別傳入 instanceMethod() 中當(dāng)作第一個參數(shù)。也就是說,任何 instance method 參數(shù)的實(shí)際個數(shù)都會比表面上多一個,這個多出來的參數(shù)是由 Java 編譯器幫我們加上去的,用來代表對應(yīng)的 instance 。此參數(shù)的變數(shù)名稱為 this ,也是 Java 的一個關(guān)鍵字( keyword )。
          ???
          當(dāng)調(diào)用某個 instance method 或使用某個 instance field 時,你必須在前面加上該 instance 的名稱,如果該 instance method/field 相關(guān)的 instance 和當(dāng)時程式碼所在的 instance method instance 指的是同一個 instance 時,該 instance 的名稱就是 this ,這種情況下,你也可以選擇不在前面加上「 this. 」。
          ???
          然而,在某些狀況下,非得在前面加上「 this. 」不可。例如,當(dāng) method 中的參數(shù)或區(qū)域變數(shù)和 instance field 名稱完全相同時,如果不在前面冠上「 this. 」,那么指的是參數(shù)或區(qū)域變數(shù);如果在前面冠上「 this. 」,那么指的才是 instance field

          轉(zhuǎn)自http://www.aygfsteel.com/guoyongfei/archive/2009/02/06/253571.html
          主站蜘蛛池模板: 洪洞县| 靖宇县| 邻水| 黔东| 杭锦旗| 囊谦县| 清流县| 博乐市| 红原县| 班戈县| 哈尔滨市| 武定县| 诸暨市| 湖北省| 丹寨县| 洪江市| 大埔县| 潼关县| 革吉县| 内江市| 瑞金市| 娄烦县| 合水县| 蕉岭县| 交城县| 阿坝县| 浮山县| 乃东县| 禹城市| 天气| 拉孜县| 安泽县| 汤阴县| 清原| 象山县| 汉川市| 襄樊市| 桃江县| 正宁县| 福海县| 海原县|