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

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

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

    show-sales.com

    awed

     

    自動裝箱與拆箱的誤用

    在JAVA JDK1.5以后具有的自動裝箱與拆箱的功能,所謂的自動裝箱
    與拆箱也就是把基本的數(shù)據(jù)類型自動的轉為封裝類型。
    如:自動裝箱,它可以直接把基本類型賦值給封裝類型
    Integer num = 10 ;
    Double d = 2d ;
       
     自動拆箱,它可以把封裝類型賦值給基本類型
    int num = new Integer(10);
    double d = new Double(2d);

    知道了自動裝箱與拆箱后我們現(xiàn)看一下下面這兩個程序代碼:

    AutoBoxDemo1.java
    -------------------------------------------------------
    public class AutoBoxDemo1 
    {
        
    public static void main(String[] args) 
        
    {        
            Integer d1 
    = 100 ;
            Integer d2 
    = 100 ;

            
    if(d1==d2)
                System.out.println(
    "d1==d2");
            
    else
                System.out.println(
    "d1!=d2");
        }

    }



    AutoBoxDemo2.java
    --------------------------------------------------------
    public class AutoBoxDemo2 
    {
        
    public static void main(String[] args) 
        
    {        
            Integer d1 
    = 200 ;
            Integer d2 
    = 200 ;

            
    if(d1==d2)
                System.out.println(
    "d1==d2");
            
    else
                System.out.println(
    "d1!=d2");
        }

    }

    大家看看這兩個程序代碼的結果是怎么樣的呢?
    其實在AutoBoxDemo1.java中結果是:d1==d2
    在AutoBoxDemo2.java中結果是:d1!=d2

    為什么結果會是這樣的?我們來看了解一下!

    其實剛剛這兩個程序結果的不同是與==運算符比較有關,==是用來比較
    兩個基本數(shù)據(jù)類型的變量是否相等的,而事實上==也用于判斷兩個對象
    變量名是否參考同一對象。在自動裝箱時對于值從-128到127之間的值
    它們被裝箱為Integer對象后會在內存中重用,所以在AutoBoxDemo1.java
    中是相等的,而超過了從-128到127之前的值時,被裝箱后的Integer對象
    并不會被重用。所以AutoBoxDemo2.java中是不相等的。

    posted on 2007-12-12 09:58 一鳴 閱讀(1807) 評論(2)  編輯  收藏 所屬分類: J2SE

    評論

    # re: 自動裝箱與拆箱的誤用 2007-12-12 13:08 隔葉黃鶯

    這跟自動裝箱關系不大,實質上
    Integer d1 = 200 ;
    調用的是
    Integer d1 = Integer.valueOf(200) ;

    因為緩存中有 -128~127
    所以其中的數(shù)字用
    Integer.valueOf()
    Long.valueOf()
    等會反回同一個對象,也因為 Integer/Long等是不變式的,所以可以這么用

    總之不應歸咎到自動裝拆箱的誤,首先要檢討的是你有
    d1==d2
    的形式進行比較的意途是什么,顯然去比較它們的引用基本沒什么意思,既然是比較數(shù)值就用
    d1.equals(d2) 或者 d1.intValue()==d2.intValue()
    來比較,也是編程習慣要注意的問題。  回復  更多評論   

    # re: 自動裝箱與拆箱的誤用 2008-04-17 10:36 一鳴

    @隔葉黃鶯
    謝謝您的指正,很久沒有寫記錄的習慣了,在此謝謝你的指正,我也一定更加努力。  回復  更多評論   


    只有注冊用戶登錄后才能發(fā)表評論。


    網站導航:
     

    導航

    統(tǒng)計

    公告


    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 丝袜捆绑调教视频免费区| 亚洲精品色在线网站| 国产免费内射又粗又爽密桃视频| 成年女人毛片免费观看97| 精品亚洲AV无码一区二区三区 | 久久九九兔免费精品6| 亚洲AV天天做在线观看| 美女视频黄的免费视频网页 | 中文字幕亚洲综合久久2| 久久精品国产免费一区| 亚洲韩国—中文字幕| 最近中文字幕电影大全免费版| 中文字幕亚洲免费无线观看日本| 免费看又黄又无码的网站| 亚洲综合综合在线| 18禁超污无遮挡无码免费网站国产 | 日韩毛片免费无码无毒视频观看| 亚洲综合国产成人丁香五月激情| 免费看a级黄色片| 免费国产高清毛不卡片基地| 亚洲国产精品日韩| 十八禁视频在线观看免费无码无遮挡骂过| 亚洲小说区图片区另类春色| 久久久99精品免费观看| 亚洲香蕉久久一区二区三区四区| 免费看又爽又黄禁片视频1000| 香蕉视频免费在线播放| 日韩亚洲欧洲在线com91tv| 久久99国产乱子伦精品免费| 亚洲一区中文字幕在线电影网| 国产大片51精品免费观看| 中文字幕免费视频精品一| 亚洲日韩在线视频| 四虎永久免费网站免费观看| 中文无码日韩欧免费视频| 亚洲精品免费在线视频| 成人免费视频国产| 国产午夜精品免费一区二区三区 | 无码av免费一区二区三区试看| 亚洲色成人网站WWW永久四虎| 最新精品亚洲成a人在线观看|