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

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 清徐县| 芦溪县| 和田市| 武功县| 木里| 高青县| 呼图壁县| 醴陵市| 留坝县| 平阳县| 宜丰县| 乐都县| 连城县| 上饶县| 松阳县| 遂川县| 武宁县| 新建县| 三门县| 百色市| 利津县| 汕尾市| 湖州市| 盖州市| 城步| 咸阳市| 西平县| 沂水县| 义乌市| 台南县| 宜昌市| 沿河| 古蔺县| 松江区| 彭州市| 根河市| 德州市| 晴隆县| 漠河县| 汕头市| 固原市|