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

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

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

    隨筆-126  評論-247  文章-5  trackbacks-0


    前言:
    java 5.0 開始對基本數據類型提供了 自動裝箱 (autoboxing) 和 自動拆箱 (autounboxing) 的功能,
    使得基本數據類型與其對象之間的轉換變得極其方便。

    即便你不知道 什么是 自動裝箱與拆箱,但相信你平常時候一直都在接觸,只是在你還沒有觸及這樣一個概念之前,一直沒有發覺而已。
    但是你需要知道在 java 中什么是自動裝箱與拆箱,還需要知道 int 和 short 的裝箱,因為這兩個的裝箱規則與 float 或 double 以及
    其他的基本數據類型不完全一樣。

    自動裝箱

    1
    2        /**
    3         * 實際上,程序運行時,系統為我們執行了下面一條語句:
    4         * Integer number = new Integer(290);
    5         */

    6        Integer number = 290;
    7        System.out.println(number);
    8


    自動拆箱

     1
     2        Integer number = 290;
     3        // Other code
     4      /**
     5         * 實際上,程序運行時,系統為我們執行了下面一條語句:
     6         * int number2 = number.intValue();
     7         */

     8        int number2 = number;
     9        System.out.println(number2);
    10


    就上面示例代碼塊而言,實際上自動裝箱就是系統自動幫我們去 new 了 Integer 對象,大家都知道,每個對象都會有一個 hashCode() 方法,
    這個方法是繼承 Object 而來,Object 類是所有類的超類。當需要比較兩個對象是否相等時,可以用 " == " 和 equals 來做比較。
    于對象而言, " == " 比較的是哈希碼的值,也就是比較 hashCode() 方法的返回值,這個值是唯一的,在底層它是用來確定對象在堆內存上的存儲位置。
    " == " 也可以用來做基本數據類型的比較。equals 方法大家都知道,它是用來比較兩個對象的內容是否一樣。
    上面說到自動裝箱其實就是系統自動幫我們去 new 了 Integer 對象,但是神奇的事情發生了:
    當 int 的取值在  -128 ~ 127 之間的時候,這時候系統并不會每次都幫我們去 new 一個 Integer 對象,而是取值相同的對象只會被 new 一次,
    取值相同的 Integer 對象系統不會再去 new 一次,而是共享了已有的這個 Integer 對象。
    而當 int 的取值在  -128 ~ 127 之外的時候,這時候不管 Integer 對象的取值是否一樣,系統都會去 new 一個。


    示例代碼:

     1
     2        // -128~127 之內的數
     3        Integer number1 = 40;
     4        Integer number2 = 40;
     5        System.out.println("number1 == number2 :  --->> " + (number1 == number2));    // output : true
     6        
     7        // -128~127 之外的數
     8        Integer number3 = 128;
     9        Integer number4 = 128;
    10       System.out.println("number3 == number4 :  --->> " + (number3 == number4));    // output : false
    11       System.out.println("number3 equals number4 :  --->> " + (number3.equals(number4)));    // output : true
    12


    示例代碼輸出結果:

    1
    2number1 == number2 :  --->> true
    3number3 == number4 :  --->> false
    4number3 equals number4 :  --->> true
    5


    short 與 int 的裝箱規則是一樣,就不多說了,但不要認為所有的基本數據類型都有這樣一個規則,比如 float 和 double 都沒有這樣的規則,
    float 和 double 每次裝箱的時候都是會包裝成一個對象的。












      
    posted on 2012-07-08 07:36 fancydeepin 閱讀(1757) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 视频免费在线观看| 中文字幕高清免费不卡视频| 久久久久久久亚洲Av无码| 国产日本亚洲一区二区三区| 香蕉国产在线观看免费| 免费中文字幕在线观看| 国产亚洲综合精品一区二区三区| 四虎永久在线免费观看| 一二三四在线观看免费中文在线观看| 免费观看国产小粉嫩喷水| 七次郎成人免费线路视频| 四虎永久在线精品免费网址 | 亚洲成AV人片一区二区| 免费国产午夜高清在线视频 | 中文字幕亚洲综合小综合在线| 波多野结衣免费在线| 亚洲国产一二三精品无码| 男人进去女人爽免费视频国产| 天堂亚洲免费视频| 中文字幕在线日亚洲9| 日韩一级免费视频| 456亚洲人成在线播放网站| 成人性生活免费视频| 亚洲剧情在线观看| 日本牲交大片免费观看| 午夜在线免费视频 | 亚洲精品无码久久久久YW| 日本黄网站动漫视频免费| 亚洲国产成人99精品激情在线| 黄网址在线永久免费观看 | 婷婷亚洲天堂影院| 日韩中文字幕免费视频| 好看的电影网站亚洲一区| 国内精自视频品线六区免费| 美女18毛片免费视频| 内射干少妇亚洲69XXX| 国产不卡免费视频| 日韩内射激情视频在线播放免费| 亚洲熟妇无码AV不卡在线播放| 久久精品夜色噜噜亚洲A∨| h片在线免费观看|