首頁  >  文章  >  Java  >  Java教學—int與Integer的差別

Java教學—int與Integer的差別

高洛峰
高洛峰原創
2016-12-02 16:22:391869瀏覽

先說一下int和Integer的差別:

int 是基本資料型,Integer是int的包裝類別。注意:後者的類型是“類別”。例如使用泛型,List numList;

int初步值0,integer是null。

下面看具體例子:

package syswar.cc;

public class IntegerCompare {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Integer a1 = 2;
        Integer a2 = 2;

        Integer b1 = 150;
        Integer b2 = 150;

        Integer c1 = new Integer(2);
        Integer c2 = new Integer(2);

        Integer d1 = new Integer(150);
        Integer d2 = new Integer(150);

        System.out.println("a1==a2?" + (a1==a2));
        System.out.println("b1==b2?" + (b1==b2));
        System.out.println("c1==c2?" + (c1==c2));
        System.out.println("d1==d2?" + (d1==d2));
    }

}

 

運行結果:

a1==a2?true
b1==b2?false
c1==c2?false
d1==d2?false>

為什麼是這個結果呢?我們先比較a和b兩組,Integer初始化時,快取Integer物件數據,這些Integer物件對應的int值為byte範圍,即[-128,127]。

當直接給Integer賦int值時,如果值得範圍為[-128,127],Integer直接從緩存中取Integer對象,因此,當直接賦的int值處於[-128,127]時,Integer對象為相同的對象。

而透過new方式取的Integer對象,是直接從堆裡面分配的對象,因此,不管具體的int值為多少,==判斷的結果都是false


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn