溫馨提示×

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

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

java中int和Integer有什么不同

發(fā)布時(shí)間:2020-06-10 18:32:06 來(lái)源:億速云 閱讀:220 作者:鴿子 欄目:編程語(yǔ)言

基礎(chǔ):

1、int 是 java 的一種基礎(chǔ)數(shù)據(jù)類型,而 integer 是int 的一個(gè)封裝類。

2、Integer 變量必須實(shí)例化之后才能使用,而 int 變量不需要。

3、Integer 實(shí)際是對(duì)象的引用,當(dāng) new 一個(gè) integer 對(duì)象時(shí),實(shí)際上是生成一個(gè)指針指向該對(duì)象;而 int 是直接存儲(chǔ)數(shù)據(jù)值。

4、Integer 的默認(rèn)值是 null ,而 int 的默認(rèn)值是 0。

延伸:

1、因?yàn)?integer 變量實(shí)際上是對(duì) integer 對(duì)象的引用,所以兩個(gè)通過(guò)new 的integer 變量永遠(yuǎn)不相等(因?yàn)?new 生成的是兩個(gè)對(duì)象,其內(nèi)存地址不一樣)。

Integer i = new Integer(100);
Integer j = new Integer(100);
System.out.print(i == j);//false

2、當(dāng)一個(gè) integer 變量和一個(gè) int 變量比較時(shí),只要兩個(gè)變量的值相等,那么結(jié)果就是true,因?yàn)?integer 本質(zhì)是 int 的一個(gè)封裝類,當(dāng)兩數(shù)比較時(shí),java會(huì)自動(dòng)將 integer拆包,所以本質(zhì)上就是兩個(gè)int 變量的比較。

Integer i = new Integer(100);
int j = 100;
System.out.print(i == j);//true

3、當(dāng)一個(gè) new 創(chuàng)建的 Integer 變量和一個(gè)非 new 創(chuàng)建的 Integer 變量比較時(shí),結(jié)果為false。因?yàn)榉?new 創(chuàng)建的變量存在 java 常量池中,而 new 創(chuàng)建的變量指向堆中新建的對(duì)象,兩者的內(nèi)存地址不同。

Integer i = new Integer(100);
Integer j = 100;
System.out.print(i == j);//false

4、當(dāng)兩個(gè)非 new 的 Integer 變量比較時(shí),如果兩個(gè)變量的值在-128到127之間,那么結(jié)果就是 true,否則是 false。

對(duì)于這個(gè)奇怪的結(jié)果,java 的解釋是這樣的:

Integer i = new Integer(100);//在編譯時(shí)會(huì)變成Integer i = Integer.ValueOf(100)

而 java API 中對(duì) Integer.valueOf()的定義如下:

public static Integer valueOf(int i){
    assert IntegerCache.high >= 127;
    if (i >= IntegerCache.low && i <= IntegerCache.high){
        return IntegerCache.cache[i + (-IntegerCache.low)];
    }
    return new Integer(i);
}

即,對(duì)于 -128~127 的數(shù),java會(huì)進(jìn)行緩存,而下次再對(duì)一個(gè) Integer 變量賦值時(shí),如果在 -128~127 并且已經(jīng)被緩存,那么就會(huì)直接從緩存中調(diào)用。

以上就是java integer和int的區(qū)別有哪些的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注億速云其它相關(guān)文章!

向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