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

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

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

    DANCE WITH JAVA

    開發(fā)出高質(zhì)量的系統(tǒng)

    常用鏈接

    統(tǒng)計

    積分與排名

    好友之家

    最新評論

    Clone和New哪個更快

    Clone和new哪個更快呢,這個問題的答案不是一定的,要根據(jù)實(shí)際情況決定:
    情況一:對象簡單,這個時候new更快,測試代碼如下:
    class?TestObj?implements?Cloneable{
    ????
    public?Object?clone(){
    ????????Object?obj?
    =?null?;
    ????????
    try{
    ????????????obj?
    =?super.clone();
    ????????}
    catch(Exception?e){
    ????????}

    ????????
    return?obj;??
    ????}

    }

    public?class?CloneVsNew?{
    ????
    static?void?cloneTest(int?time){
    ????????TestObj?obj
    =new?TestObj();
    ????????
    for(int?i=0;i<time;i++){
    ????????????obj.clone();
    ????????}

    ????}


    ????
    static?void?newTest(int?time)?{
    ????????TestObj?obj
    =new?TestObj();
    ????????
    for(int?i=0;i<time;i++){
    ????????????obj
    =new?TestObj();
    ????????}

    ????}

    ????
    /**
    ?????*?
    @param?args
    ?????
    */

    ????
    public?static?void?main(String[]?args)?{
    ????????
    long?start;
    ????????
    long?stop;
    ????????
    int?times=1000000;
    ????????
    ????????System.gc();
    ????????

    ????????start
    =System.currentTimeMillis();
    ????????newTest(times);
    ????????stop
    =System.currentTimeMillis();
    ????????System.out.println(
    "newTest?Time:"+(stop-start));
    ????????
    ????????System.gc();
    ????????
    ????????start
    =System.currentTimeMillis();
    ????????cloneTest(times);
    ????????stop
    =System.currentTimeMillis();
    ????????System.out.println(
    "cloneTest?Time:"+(stop-start));
    ????????
    ????}


    }


    情況二:對象復(fù)雜,例如一個包括集合類的類的對象。而且這個對象的Clone使用的淺拷貝。(其實(shí)快主要是快在這個地方)
    不用例子了,淺拷貝只是引用的復(fù)制,肯定比復(fù)制快。

    還有一些其它的情況,但總體來說,隨著對象的復(fù)雜,clone越來越快,new越來越慢。不過在使用clone的時候
    一定要想清楚再用,淺拷貝使用不當(dāng)會出現(xiàn)很多問題。

    posted on 2007-02-26 16:11 dreamstone 閱讀(6131) 評論(7)  編輯  收藏 所屬分類: jdk相關(guān)

    評論

    # re: Clone和New哪個更快 2007-02-26 20:40 lang

    一般系統(tǒng)很少使用clone的吧,你怎么想起來比較這個了呢!?  回復(fù)  更多評論   

    # re: Clone和New哪個更快 2007-02-26 22:57 hcom

    我還不知道clone干什么用的呢?摟住能不能講講clone一般用在什么場合啊?  回復(fù)  更多評論   

    # re: Clone和New哪個更快 2007-02-26 23:10 dreamstone

    to lang:
    比較這個是因為上一篇文章用到這個結(jié)論,當(dāng)時想了一下,有點(diǎn)疑問隨便測試了一下,把結(jié)果留下

      回復(fù)  更多評論   

    # re: Clone和New哪個更快 2007-02-26 23:12 dreamstone

    to hcom :
    clone的使用方法,建議你看看Thinking in java寫的。一些基礎(chǔ)的東西Thinking in java講的很好,容易理解而且覆蓋也夠廣泛。  回復(fù)  更多評論   

    # re: Clone和New哪個更快 2007-02-27 13:40 hcom

    噢,有點(diǎn)明白了。

    有些時候我們迫切需要一個與對象A相同的對象B,但是改變對象B的狀態(tài)的時候不能改變對象A,這個時候用clone就可以拷貝一個對象A,而不是拷貝對象A的引用。clone出來的對象B是享有單獨(dú)內(nèi)存區(qū)域的,改變B不會影響A。

    不知道這樣理解對不對啊  回復(fù)  更多評論   

    # re: Clone和New哪個更快 2007-02-27 14:34 dreamstone

    to hcom:
    你說的大概意思對,但是如果是深拷貝復(fù)合你說的情況,如果是淺拷貝則不是,而sun的jdk很多實(shí)現(xiàn)默認(rèn)是淺拷貝的,如果你真的想用clone的話,還是建議你完整的看一下thinking in java(這書比較好找,網(wǎng)上很多電子書),或者別的書也可以。  回復(fù)  更多評論   

    # re: Clone和New哪個更快 2015-08-10 12:39 jsolo

    次數(shù)改成1千萬,是new比較快,怎么解釋?  回復(fù)  更多評論   

    主站蜘蛛池模板: 91短视频在线免费观看| 亚洲精品在线免费观看视频| 在线播放亚洲精品| 在线观看免费污视频| youjizz亚洲| 成人免费无码大片a毛片| 久久精品国产亚洲AV电影网| 国产性生交xxxxx免费| 国产精品亚洲综合| 亚洲欧洲国产精品久久| 三年片在线观看免费观看高清电影| 一区二区亚洲精品精华液 | 亚洲一级Av无码毛片久久精品| 一级毛片视频免费观看| 久久久青草青青亚洲国产免观| 日韩精品人妻系列无码专区免费| 亚洲精选在线观看| 性色av无码免费一区二区三区| 日韩人妻一区二区三区免费| APP在线免费观看视频| 亚洲精品第五页中文字幕| 亚洲精品中文字幕乱码三区| 欧美大尺寸SUV免费| 国产人成免费视频网站| 在线视频亚洲一区| 亚洲日韩看片无码电影| 亚洲无线码在线一区观看| 2020久久精品国产免费| 久久99国产综合精品免费| 久久免费精彩视频| 亚洲AV无码国产精品永久一区| 久久久青草青青亚洲国产免观| 伊伊人成亚洲综合人网7777| 久久久久国色AV免费观看性色| 国产成人精品免费视频大| 成人精品视频99在线观看免费| 亚洲成aⅴ人在线观看| 亚洲精品美女在线观看播放| 亚洲码在线中文在线观看| 亚洲制服丝袜一区二区三区| 亚洲中文久久精品无码|