Java編程技巧之final


                  關鍵詞final在Java中有多重用途,既可被用于instance變量、static變量
          也可用于classes或methods,表示不允許客戶覆寫它們。
                  當一個方法被聲明成final,在兩個領域中顯得有位重要:
          1. class設計
          2. 運行期性能
                  在程序設計里,有時我們不希望我們的方法被重寫或覆蓋,final關鍵字保證了這一點。
          final關鍵字是怎么影響性能的呢?
                  當我們的方法被聲明成static,final和private, 此方法將成為Inlining(內聯函數)的候選者。此類方法可以在編譯期被靜態決議(staticallyresolved),而不需要動態決議(dynamicResolution)。以方法本體(methodbody)替換方法調用(methodcall)會使代碼執行速度更快。
                  將方法聲明為static、final和private會帶來一些缺點:這樣的方法無法通過Subclassing(子類化)進行擴展。這就束縛了derived class通過class函數做事情的機會。inlined方法只有在被多次調用的情況下,才會獲得令人側目的性能提升。這是因為當一個方法被inline后,就不再需要負擔方法調用的額外開銷。因此,方法被調用愈多次,節省就愈多。
                  不過inlining也可能使你的代碼體積變大。如果這個方法有許多調用點,.class文件的體積便會膨脹,這是因為原本只需存儲一份的函數碼,由于inline而在所有調用點被復制了一份。


          Kyle Wang

          posted on 2012-10-15 22:23 王樹東 閱讀(265) 評論(0)  編輯  收藏 所屬分類: Java Skills Learning and Sharing

          <2012年10月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          導航

          統計

          公告

          常用鏈接

          留言簿

          隨筆分類(17)

          隨筆檔案(15)

          文章分類(4)

          文章檔案(5)

          收藏夾(4)

          Algorithm

          Design

          Environment Setup

          Installer

          Maven

          MINA

          OS

          Skills for Java

          VIM

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 射阳县| 陇川县| 凤翔县| 固阳县| 松潘县| 沙田区| 溆浦县| 湾仔区| 林口县| 怀化市| 恩施市| 南部县| 和田县| 阿勒泰市| 滕州市| 石台县| 宜昌市| 丰城市| 灌云县| 萝北县| 哈密市| 隆子县| 江永县| 无棣县| 河源市| 云霄县| 磐石市| 沾益县| 广东省| 鄂托克前旗| 容城县| 项城市| 阿合奇县| 商丘市| 建水县| 秦安县| 怀宁县| 蕲春县| 鄢陵县| 田阳县| 凤山县|