首頁  >  文章  >  Java  >  java中int和integer的差別是什麼?

java中int和integer的差別是什麼?

青灯夜游
青灯夜游原創
2019-12-26 16:26:463968瀏覽

java中int和integer的差異

 ● int是基本資料類型,int變數儲存的是數值;Integer是引用資料類型,實際上是一個對象,Integer儲存的是引用對象的位址

 ● int預設值是0,Integer預設值是null;

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

【推薦學習:Java影片教學

int與Integer所佔記憶體比較:

##Integer物件會佔用更多的內存。 Integer是一個對象,需要儲存對象的元資料。但是int是一個原始類型的數據,所以佔用的空間更少。

非new產生的Integer變數與new Integer()產生的變數比較,結果為false。

/**
 * 比较非new生成的Integer变量与new生成的Integer变量
 */public class Test {
    public static void main(String[] args) {
        Integer i= new Integer(200);
        Integer j = 200;
        System.out.print(i == j);        //输出:false
    }
}

因為非new產生的Integer變數指向的是java常數池中的對象,而new Integer()產生的變數指向堆中新建的對象,兩者在記憶體中的位址不同。所以 輸出為false。

兩個非new產生的Integer物件進行比較

如果兩個變數的值在區間[-128,127]之間,比較結果為true;否則,結果為false。

/**
 * 比较两个非new生成的Integer变量
 */public class Test {
    public static void main(String[] args) {
        Integer i1 = 127;
        Integer j1 = 127;
        System.out.println(i1 == j1);//输出:true
        Integer i2 = 128;
        Integer j2 = 128;
        System.out.println(i2 == j2);//输出:false
    }
}

java在編譯Integer i1 = 127時,會翻譯成Integer i1 = Integer.valueOf(127)。

Integer變數(無論是否是new生成的)與int變數比較

只要兩個變數的值是相等的,結果都為true。

/**
 * 比较Integer变量与int变量
 */public class Test {
    public static void main(String[] args) {
        Integer i1 = 200;
        Integer i2 = new Integer(200);        int j = 200;
        System.out.println(i1 == j);//输出:true
        System.out.println(i2 == j);//输出:true
    }
}

包裝類別Integer變數與基本資料型態i​​nt變數比較時,Integer會自動拆包裝為int,然後進行比較,其實就是兩個int變數比較,數值相等,所以為true。

以上是java中int和integer的差別是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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