<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 閱讀(1758) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 国产无人区码卡二卡三卡免费| 区久久AAA片69亚洲| 国产一级黄片儿免费看| 亚洲中文字幕无码爆乳app| 亚洲国产一区在线| 久久夜色精品国产亚洲av| 在线免费观看一级毛片| 又粗又硬免费毛片| 国产香蕉免费精品视频| 久久青草91免费观看| 一个人看的免费观看日本视频www 一个人看的免费视频www在线高清动漫 | 亚洲一区二区三区久久久久| 成人免费大片免费观看网站| 国产免费网站看v片在线| 人妖系列免费网站观看| 日韩色视频一区二区三区亚洲| 亚洲国产系列一区二区三区| 亚洲国产精品综合久久网各| 亚洲天天做日日做天天看| 亚洲国产精品嫩草影院在线观看| 亚洲成人免费电影| 最新亚洲人成网站在线观看| 久久久久亚洲国产| 亚洲av永久无码精品天堂久久| 中文字幕亚洲综合久久| 久久精品国产亚洲av高清漫画| 久久久久亚洲精品影视| 亚洲一区二区三区首页| 亚洲高清中文字幕| 亚洲大尺码专区影院| 亚洲欧洲日产国码二区首页| 久久夜色精品国产噜噜噜亚洲AV| 久久亚洲私人国产精品vA| 在线观看亚洲人成网站| 亚洲黄网在线观看| 亚洲欧洲久久精品| 日本亚洲免费无线码 | 国产午夜精品久久久久免费视| 亚洲人成色77777在线观看| 亚洲一久久久久久久久| 亚洲人成电影网站免费|