真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java中int和Integer有什么不同

基礎(chǔ):

成都創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)土默特右旗,10年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792

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

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

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

4、Integer 的默認值是 null ,而 int 的默認值是 0。

延伸:

1、因為 integer 變量實際上是對 integer 對象的引用,所以兩個通過new 的integer 變量永遠不相等(因為 new 生成的是兩個對象,其內(nèi)存地址不一樣)。

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

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

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

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

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

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

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

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

而 java API 中對 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);
}

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

以上就是java integer和int的區(qū)別有哪些的詳細內(nèi)容,更多請關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!


本文題目:java中int和Integer有什么不同
路徑分享:http://weahome.cn/article/ipcepi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部