色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

通過(guò)實(shí)例了解Java Integer類(lèi)和int的區(qū)別

瀏覽:39日期:2022-09-04 08:36:38

代碼實(shí)例如下

public static void main(String[] args) { Integer i = 10; Integer j = 10; System.out.println(i == j); Integer a = 128; Integer b = 128; System.out.println(a == b); int k = 10; System.out.println(k == i); int kk = 128; System.out.println(kk == a); Integer m = new Integer(10); Integer n = new Integer(10); System.out.println(m == n);}

我們使用反編譯工具Jad,得到的代碼如下:

public static void main(String args[]){ Integer i = Integer.valueOf(10); Integer j = Integer.valueOf(10); System.out.println(i == j); Integer a = Integer.valueOf(128); Integer b = Integer.valueOf(128); System.out.println(a == b); int k = 10; System.out.println(k == i.intValue()); int kk = 128; System.out.println(kk == a.intValue()); Integer m = new Integer(10); Integer n = new Integer(10); System.out.println(m == n);}

打印結(jié)果為:

通過(guò)實(shí)例了解Java Integer類(lèi)和int的區(qū)別

首先,直接聲明Integer i = 10,會(huì)自動(dòng)裝箱變?yōu)镮nteger i = Integer.valueOf(10);Integer i 會(huì)自動(dòng)拆箱為 i.intValue()。

①、第一個(gè)打印結(jié)果為 true

對(duì)于 i == j ,我們知道這是兩個(gè)Integer類(lèi),他們比較應(yīng)該是用equals,這里用==比較的是地址,那么結(jié)果肯定為false,但是實(shí)際上結(jié)果為true,這是為什么?

我們進(jìn)入到Integer 類(lèi)的valueOf()方法:

通過(guò)實(shí)例了解Java Integer類(lèi)和int的區(qū)別

分析源碼我們可以知道在 i >= -128 并且 i <= 127 的時(shí)候,第一次聲明會(huì)將 i 的值放入緩存中,第二次直接取緩存里面的數(shù)據(jù),而不是重新創(chuàng)建一個(gè)Ingeter 對(duì)象。那么第一個(gè)打印結(jié)果因?yàn)?i = 10 在緩存表示范圍內(nèi),所以為 true。

②、第二個(gè)打印結(jié)果為 false

從上面的分析我們知道,128是不在-128到127之間的,所以第一次創(chuàng)建對(duì)象的時(shí)候沒(méi)有緩存,第二次創(chuàng)建了一個(gè)新的Integer對(duì)象。故打印結(jié)果為false

③、第三個(gè)打印結(jié)果為 true

Integer 的自動(dòng)拆箱功能,也就是比較兩個(gè)基本數(shù)據(jù)類(lèi)型,結(jié)果當(dāng)然為true

④、第四個(gè)打印結(jié)果為 true

解釋和第三個(gè)一樣。int和integer(無(wú)論new否)比,都為true,因?yàn)闀?huì)把Integer自動(dòng)拆箱為int再去比較。

⑤、第五個(gè)打印結(jié)果為 false

因?yàn)檫@個(gè)雖然值為10,但是我們都是通過(guò) new 關(guān)鍵字來(lái)創(chuàng)建的兩個(gè)對(duì)象,是不存在緩存的概念的。兩個(gè)用new關(guān)鍵字創(chuàng)建的對(duì)象用 == 進(jìn)行比較,結(jié)果當(dāng)然為 false。

5、測(cè)試

Integer a = 1;Integer b = 2;Integer c = 3;Integer d = 3;Integer e = 321;Integer f = 321;Long g = 3L;Long h = 2L;System.out.println(c == d);System.out.println(e == f);System.out.println(c == (a + b));System.out.println(c.equals((a+b)));System.out.println(g == (a+b));System.out.println(g.equals(a+b));System.out.println(g.equals(a+h));

反編譯結(jié)果:

通過(guò)實(shí)例了解Java Integer類(lèi)和int的區(qū)別

分析:第一個(gè)和第二個(gè)結(jié)果沒(méi)什么疑問(wèn),Integer類(lèi)在-128到127的緩存問(wèn)題;

第三個(gè)由于 a+b包含了算術(shù)運(yùn)算,因此會(huì)觸發(fā)自動(dòng)拆箱過(guò)程(會(huì)調(diào)用intValue方法),==比較符又將左邊的自動(dòng)拆箱,因此它們比較的是數(shù)值是否相等。

第四個(gè)對(duì)于c.equals(a+b)會(huì)先觸發(fā)自動(dòng)拆箱過(guò)程,再觸發(fā)自動(dòng)裝箱過(guò)程,也就是說(shuō)a+b,會(huì)先各自調(diào)用intValue方法,得到了加法運(yùn)算后的數(shù)值之后,便調(diào)用Integer.valueOf方法,再進(jìn)行equals比較。

第五個(gè)對(duì)于 g == (a+b),首先計(jì)算 a+b,也是先調(diào)用各自的intValue方法,得到數(shù)值之后,由于前面的g是Long類(lèi)型的,也會(huì)自動(dòng)拆箱為long,==運(yùn)算符能將隱含的將小范圍的數(shù)據(jù)類(lèi)型轉(zhuǎn)換為大范圍的數(shù)據(jù)類(lèi)型,也就是int會(huì)被轉(zhuǎn)換成long類(lèi)型,兩個(gè)long類(lèi)型的數(shù)值進(jìn)行比較。

第六個(gè)對(duì)于 g.equals(a+b),同理a+b會(huì)先自動(dòng)拆箱,然后將結(jié)果自動(dòng)裝箱,需要說(shuō)明的是equals 運(yùn)算符不會(huì)進(jìn)行類(lèi)型轉(zhuǎn)換。所以是Long.equals(Integer),結(jié)果當(dāng)然是false

第七個(gè)對(duì)于g.equals(a+h),運(yùn)算符+會(huì)進(jìn)行類(lèi)型轉(zhuǎn)換,a+h各自拆箱之后是int+long,結(jié)果是long,然后long進(jìn)行自動(dòng)裝箱為L(zhǎng)ong,兩個(gè)Long進(jìn)行equals判斷。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 永久免费不卡在线观看黄网站 | 92av在线 | 亚洲国产欧美在线成人aaaa | 成人夜色香网站在线观看 | 美女张开腿让男生桶出水 | 成 人免费视频l免费观看 | 精品久久久久久久久免费影院 | 国产一区二区影院 | 国产精品黄色 | 国产短裙黑色丝袜在线观看下 | 久久精品免费一区二区视 | 欧美高清另类自拍视频在线看 | 男女免费爽爽爽在线视频 | 国内精品久久久久久久影视麻豆 | 精品国产一区二区三区四区vr | 男女那个视频免费 | 又摸又揉又黄又爽的视频 | 亚洲毛片在线 | 大美女香蕉丽人视频网站 | 亚洲精品久久久成人 | 亚洲欧美日韩高清综合678 | 毛片大全在线 | 99国产精品一区二区 | 泰国一级毛片aaa下面毛多 | 国产黄网站 | 欧美人交性视频在线香蕉 | 国产免费观看a大片的网站 国产免费黄色网址 | 成人国产在线看不卡 | 国产在线a| 中文字幕一级毛片视频 | 国产精品亚洲片在线观看不卡 | 网红主播大尺度精品福利视频 | 日本aaaaa毛片动漫 | 草草影院www色欧美极品 | 国产自线一二三四2021 | 久草久视频 | 天堂亚洲网 | 国产精品久久久精品视频 | 久草影音| 在线观看免费黄色网址 | 国产三级麻豆 |