溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

java中int和integer的區(qū)別有哪些?

發(fā)布時(shí)間:2020-05-09 10:03:40 來(lái)源:億速云 閱讀:624 作者:小新 欄目:編程語(yǔ)言

這篇文章主要為大家詳細(xì)介紹了java中int和integer的區(qū)別有哪些,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。

java中int和integer的區(qū)別

 ● int是基本數(shù)據(jù)類(lèi)型,int變量存儲(chǔ)的是數(shù)值;Integer是引用數(shù)據(jù)類(lèi)型,實(shí)際是一個(gè)對(duì)象,Integer存儲(chǔ)的是引用對(duì)象的地址。

 ● int默認(rèn)值是0,Integer默認(rèn)值是null;

 ● int類(lèi)型直接存儲(chǔ)數(shù)值,Integer需要實(shí)例化對(duì)象,指向?qū)ο蟮牡刂贰?/p>

int和Integer所占內(nèi)存比較:

Integer對(duì)象會(huì)占用更多的內(nèi)存。Integer是一個(gè)對(duì)象,需要存儲(chǔ)對(duì)象的元數(shù)據(jù)。但是int是一個(gè)原始類(lèi)型的數(shù)據(jù),所以占用的空間更少。

非new生成的Integer變量與new Integer()生成的變量比較,結(jié)果為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
    }
}

因?yàn)榉莕ew生成的Integer變量指向的是java常量池中的對(duì)象,而new Integer()生成的變量指向堆中新建的對(duì)象,兩者在內(nèi)存中的地址不同。所以 輸出為false。

java中int和integer的區(qū)別有哪些?

兩個(gè)非new生成的Integer對(duì)象進(jìn)行比較

如果兩個(gè)變量的值在區(qū)間[-128,127]之間,比較結(jié)果為true;否則,結(jié)果為false。

/**
 * 比較兩個(gè)非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時(shí),會(huì)翻譯成Integer i1 = Integer.valueOf(127)。

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

只要兩個(gè)變量的值是相等的,結(jié)果都為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
    }
}

包裝類(lèi)Integer變量在與基本數(shù)據(jù)類(lèi)型int變量比較時(shí),Integer會(huì)自動(dòng)拆包裝為int,然后進(jìn)行比較,實(shí)際上就是兩個(gè)int變量進(jìn)行比較,值相等,所以為true。

以上就是java中int和integer的區(qū)別有哪些的簡(jiǎn)略介紹,當(dāng)然詳細(xì)使用上面的不同還得要大家自己使用過(guò)才領(lǐng)會(huì)。如果想了解更多,歡迎關(guān)注億速云行業(yè)資訊頻道哦!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI