站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

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

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

一、java基本數(shù)據(jù)類型及其封裝類

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

java數(shù)據(jù)類型有基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,為了方便將基本數(shù)據(jù)類型當(dāng)作對(duì)象處理,java引入了基本數(shù)據(jù)類型相對(duì)應(yīng)的封裝類,如int封裝類是Integer。

在線教學(xué)視頻分享:java教學(xué)視頻

二、java自動(dòng)拆箱和自動(dòng)裝箱

1、自動(dòng)裝箱

自動(dòng)裝箱其實(shí)就是將基本數(shù)據(jù)類型轉(zhuǎn)換為引用數(shù)據(jù)類型(對(duì)象)

2、自動(dòng)拆箱

自動(dòng)拆箱其實(shí)就是將引用數(shù)據(jù)類型轉(zhuǎn)化為基本數(shù)據(jù)類型

代碼如下:

    public static void main(String[] args) {         Integer a = 1;//這里就用到了自動(dòng)裝箱;等同于Integer a = new Integer(1);          int b = a - 1;//對(duì)象不能直接進(jìn)行計(jì)算,所以這里有自動(dòng)拆箱的操作,將a對(duì)象轉(zhuǎn)換成基本數(shù)據(jù)類型,然后-1         System.out.println(a);         System.out.println(b);     }

打印結(jié)果:

1 0

三、int和Interger的區(qū)別

從上面我們就能看出int和Interger的區(qū)別:

int是基本數(shù)據(jù)類型,Integer是引用數(shù)據(jù)類型;

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

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

說到這,是不是認(rèn)為就這么完事了,其實(shí)它們之間還有一些細(xì)節(jié)方面的區(qū)別:如下

    public static void main(String[] args) {         Integer a = new Integer(1);         Integer b = new Integer(1);          int c = 1;         int d = 1;          Integer e = 1;         Integer f = 1;                  Integer g = 130;         Integer h = 130;                  Integer i = new Integer(130);         int j = 130;     }

1:a == b 嗎? 廢話,肯定不相等。兩個(gè)new出來的對(duì)象地址不一樣。

2:c == d 嗎? 這個(gè)也是廢話,都是基本數(shù)據(jù)類型的值肯定相等。

3:現(xiàn)在的關(guān)鍵問題是 e == f 嗎? g == h 嗎?

答案是:e == f; g != h。

為什么會(huì)出現(xiàn)這種情況?因?yàn)閍va在進(jìn)行編譯時(shí) Integer g = 130會(huì)被編譯成 Integer.valueOf(130) ,這個(gè)可以通過反編譯class文件看到。而通過Integer源碼可以得出,Integer.valueOf() 方法會(huì)在數(shù)值-128~127之間會(huì)對(duì)Integer進(jìn)行緩存,不會(huì)再重新new一個(gè),所以 e==f ;當(dāng)數(shù)值二大于127或者小于-128的時(shí)候則會(huì)重新new一個(gè),所以g != h 。

Integer的valueOf方法如下:

    public static Integer valueOf(int i) {          //IntegerCache.low == -128  ;IntegerCache.high == 127          //當(dāng)數(shù)值大于-128小于127時(shí),進(jìn)行緩存;否則重新new一個(gè)。         if (i >= IntegerCache.low && i <= IntegerCache.high)             return IntegerCache.cache[i + (-IntegerCache.low)];         return new Integer(i);     }

4:c == e 嗎, i == j 嗎?

答案都是相等的。因?yàn)榉庋b類和基本數(shù)據(jù)類型進(jìn)行比較的時(shí)候,java會(huì)自動(dòng)拆箱,然后比較數(shù)值是否相等。

總結(jié):

1、都是封裝類,都是new出來的,肯定不相等。因?yàn)閷?duì)象的內(nèi)存地址不一樣。

2、都是封裝類,都不是new出來的,如果值在-128~127之間,那就相等,否則不相等。

3、如果是封裝類和基本類型進(jìn)行比較,只要數(shù)值相等那就相等,否則就不相等。因?yàn)榉庋b類和基本數(shù)據(jù)類型進(jìn)行比較的時(shí)候會(huì)有一個(gè)自動(dòng)拆箱操作。

4、都是基本數(shù)據(jù)類型,如果數(shù)值相等,那就相等;否則不相等。

想了解

贊(0)
分享到: 更多 (0)
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
另类ts人妖精品影院| 亚洲精品国产电影午夜| 国内精品免费久久影院| 亚洲AV日韩精品久久久久| 在线精品免费视频无码的| 99在线精品一区二区三区| 亚洲日韩精品一区二区三区无码| 色欲AV永久无码精品无码| 精品亚洲成在人线AV无码| 精品无码久久久久久尤物 | 午夜麻豆国产精品无码| 国产99精品久久| 91精品国产91久久久久久青草| 老司机午夜精品视频资源| 久久se精品一区二区国产| 亚洲国产精品无码久久SM| 精品久久久久久久| 亚洲精品高清无码视频| 囯产精品久久久久久久久蜜桃| 丰满人妻熟妇乱又仑精品| 久久精品?ⅴ无码中文字幕| 国产三级精品三级在线观看专1| 九九久久精品国产免费看小说| 日韩精品成人亚洲专区| 九九视频精品在线| 亚洲精品成人区在线观看| 亚洲国产主播精品极品网红| 亚洲精品高清一二区久久| 亚洲午夜精品第一区二区8050| 亚洲精品专区在线观看| 国产精品亚洲玖玖玖在线观看| 精品国产91久久久久久久a | 久久久一本精品99久久精品66 | 精品亚洲AV无码一区二区| 精品国产乱码久久久久久呢| 久久精品亚洲AV久久久无码| 国产精品岛国久久久久| 精品深夜AV无码一区二区老年 | 国产精品日韩欧美一区二区三区| 亚洲日韩乱码中文无码蜜桃| 中文字幕日韩欧美一区二区三区|