亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中integer和int有什么區別

發布時間:2020-06-21 19:23:51 來源:億速云 閱讀:190 作者:鴿子 欄目:編程語言

一、java基本數據類型及其封裝類

java中integer和int有什么區別

java數據類型有基本數據類型和引用數據類型,為了方便將基本數據類型當作對象處理,java引入了基本數據類型相對應的封裝類,如int封裝類是Integer。

二、java自動拆箱和自動裝箱

1、自動裝箱

自動裝箱其實就是將基本數據類型轉換為引用數據類型(對象)

2、自動拆箱

自動拆箱其實就是將引用數據類型轉化為基本數據類型

代碼如下:

    public static void main(String[] args) {
        Integer a = 1;//這里就用到了自動裝箱;等同于Integer a = new Integer(1);

        int b = a - 1;//對象不能直接進行計算,所以這里有自動拆箱的操作,將a對象轉換成基本數據類型,然后-1
        System.out.println(a);
        System.out.println(b);
    }

打印結果:

1
0

三、int和Interger的區別

從上面我們就能看出int和Interger的區別:

int是基本數據類型,Integer是引用數據類型;

int默認值是0,Integer默認值是null;

int類型直接存儲數值,Integer需要實例化對象,指向對象的地址。

說到這,是不是認為就這么完事了,其實它們之間還有一些細節方面的區別:如下

    public static void main(String[] args) {
        Integer a = new Integer(1);
        Integer b = new Integer(1);

        int c = 1;
        int d = 1;

        Integer e = 1;
        Integer f = 1;
        
        Integer g = 130;
        Integer h = 130;
        
        Integer i = new Integer(130);
        int j = 130;
    }

1:a == b 嗎? 廢話,肯定不相等。兩個new出來的對象地址不一樣。

2:c == d 嗎? 這個也是廢話,都是基本數據類型的值肯定相等。

3:現在的關鍵問題是 e == f 嗎? g == h 嗎?

答案是:e == f; g != h。

為什么會出現這種情況?因為ava在進行編譯時 Integer g = 130會被編譯成 Integer.valueOf(130) ,這個可以通過反編譯class文件看到。而通過Integer源碼可以得出,Integer.valueOf() 方法會在數值-128~127之間會對Integer進行緩存,不會再重新new一個,所以 e==f ;當數值二大于127或者小于-128的時候則會重新new一個,所以g != h 。

Integer的valueOf方法如下:

    public static Integer valueOf(int i) {
         //IntegerCache.low == -128  ;IntegerCache.high == 127
         //當數值大于-128小于127時,進行緩存;否則重新new一個。
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

4:c == e 嗎, i == j 嗎?

答案都是相等的。因為封裝類和基本數據類型進行比較的時候,java會自動拆箱,然后比較數值是否相等。

總結:

1、都是封裝類,都是new出來的,肯定不相等。因為對象的內存地址不一樣。

2、都是封裝類,都不是new出來的,如果值在-128~127之間,那就相等,否則不相等。

3、如果是封裝類和基本類型進行比較,只要數值相等那就相等,否則就不相等。因為封裝類和基本數據類型進行比較的時候會有一個自動拆箱操作。

4、都是基本數據類型,如果數值相等,那就相等;否則不相等。

以上就是java中int與integer的區別的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安新县| 双牌县| 九龙城区| 上高县| 东台市| 安新县| 昆明市| 淅川县| 平顺县| 吉隆县| 闽侯县| 宽甸| 嘉定区| 班玛县| 徐水县| 修武县| 北流市| 南郑县| 沙湾县| 朝阳县| 乌拉特后旗| 临清市| 海门市| 宜阳县| 靖安县| 泰兴市| 桦川县| 屯留县| 马公市| 广宁县| 浦东新区| 灵寿县| 德格县| 莒南县| 滦南县| 金阳县| 庄河市| 梁平县| 阳高县| 嵩明县| 大城县|