<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    心遠專欄

       :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      24 隨筆 :: 0 文章 :: 9 評論 :: 0 Trackbacks
    JAVA的確是一種令程序員陷入兩難境地的言語, 確切的說是思想. 它提供了如此豐富的library,讓程序員能夠很容易的寫出功能強大的程序. 同時它也封裝了如此多的細節(jié), 讓程序員能夠輕易的寫出很拙略的程序. 它所代表的object指向思想設計之初是為了把程序員從紛繁復雜的編程細節(jié)中解放出來,來達到對已有程序的利用. 但是在編程 實際上又要求程序員了解其實現(xiàn)的細節(jié)而避免寫出因調用已有l(wèi)ibrary不正引起的performance慢的,耗費系統(tǒng)資源多的程序.通常成為一個優(yōu)秀的JAVA程序員需要較長時間的經驗積累,包括從程序的tuning中,或從其他有經驗的程序員口中,才知道一定功能需要怎樣實現(xiàn),在程序中需要避免那些問題.但這往往是比較片面的,知其然而不知其所以然.我想大多數(shù)程序員都有類似的經歷,舉一個簡單的例子,下面有三種對String的累加操作.
    ① String tmp = "a" + "b" + "c";
    ② String tmp = null;
    tmp+= "a";
    tmp+= "b";
    tmp+= "c";
    ③ String tmp = null;
    StringBuffer buf = new StringBuffer();
    buf.append("a");
    buf.append("b");
    buf.append("c");
    tmp = buf.toString();
    有些JAVA程序員在任意的用這三種方法的任一種,無視它們的區(qū)別.有 些程序員知道第三種方法好一直在用而不知其為什么好,以至于作為 經驗教條的傳授給JAVA新手.真正的答案是什么呢?

    ??讓我們揭開JAVA String Class和StringBuffer Class的封裝面紗看看它的內部實現(xiàn).在JAVA中的String Class是一個不可變類,所有對一個Sting Object的改變都回導致一個新的String Object的生成.那么對tmp+=a中+符號的實現(xiàn)呢?如果你注意一下StringBuffer的Javadoc會發(fā)現(xiàn).JDK對它的實現(xiàn)是tmp=(new StringBuffer().append(tmp).append("a")).toSting(); 這樣我們發(fā)現(xiàn)②這種方法在隱性生成了一個StringBuffer Object和一個String Object 再乘3就是六個object 的資源耗費.(還不包括String Class 和StringBuffer Class內部使用的Char[])而方法③只用了兩個.也許有些程序員會對這些耗費不以為然,的確也是,不過在一些場景下它會成為perfamence的瓶頸.再回頭看看①這種方法,它會被JAVA編譯器編譯為tmp=(new StringBuffer().append("a").append("b").append("c")).to String();我們發(fā)現(xiàn)做的和③方法是同樣的事.
    ?
    posted on 2006-11-13 12:49 心遠 閱讀(151) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 2020天堂在线亚洲精品专区| 亚洲精品无码乱码成人| 亚洲精品中文字幕乱码| 国产免费网站看v片在线| 国产亚洲精品线观看动态图| 日韩免费码中文在线观看| 伊在人亚洲香蕉精品区麻豆| 美女免费视频一区二区三区| 免费在线黄色网址| h视频在线观看免费| 亚洲人成77777在线播放网站| 成人一区二区免费视频| 久久精品国产亚洲AV麻豆~| 免费在线看污视频| 337p欧洲亚洲大胆艺术| www.999精品视频观看免费| 国产成人精品日本亚洲18图| 在线观看免费亚洲| 国产精品免费看久久久香蕉| 久久亚洲高清观看| 国内精自视频品线六区免费| 亚洲国产欧美日韩精品一区二区三区 | 免费在线不卡视频| 久久高潮一级毛片免费| 亚洲人成网站影音先锋播放| 色片在线免费观看| 亚洲国产精品无码中文lv| 亚洲国产精品一区二区九九 | 国产综合亚洲专区在线| 免费日本一区二区| 亚洲日本VA午夜在线影院| 日韩亚洲国产二区| 国产成人精品免费久久久久| 亚洲自国产拍揄拍| 亚洲一级Av无码毛片久久精品| 精品在线免费观看| 亚洲乱码一二三四五六区| 亚洲精品专区在线观看| 无码人妻一区二区三区免费n鬼沢| 亚洲中文无码卡通动漫野外| 日韩一卡2卡3卡4卡新区亚洲|