第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

JAVA中關(guān)于使用==和println時(shí)到底發(fā)生了什么

JAVA中關(guān)于使用==和println時(shí)到底發(fā)生了什么

蝴蝶刀刀 2019-01-19 08:42:46
Integer a = 1;Integer b = 2;Long c = 3L;//c = a+b;//編譯出錯(cuò),會(huì)出現(xiàn)int不能轉(zhuǎn)為long的錯(cuò)誤System.out.println(c==(a+b));//正常編譯,結(jié)果為true 為什么?我知道int和long相加的時(shí)候會(huì)都轉(zhuǎn)化為long,和這個(gè)有關(guān)系嗎?對(duì)于System.out.println(c==(a+b))首先會(huì)將a、b拆箱成int,然后相加,最后的結(jié)果應(yīng)該是個(gè)int,c是個(gè)long,首先他們類型不同,IntegerCache和LongCache的地址肯定也不相同。 還有,對(duì)于《深入理解JVM》中有這樣一句話,“包裝類的“==”運(yùn)算在不遇到算術(shù)運(yùn)算的情況下不會(huì)自動(dòng)拆箱”是什么意思
查看完整描述

2 回答

?
料青山看我應(yīng)如是

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊

c==(a+b),三個(gè)包裝型a,b,c全部拆箱
c=Long.longValue(c);返回基本數(shù)據(jù)類型long
a和b使用Integer.intValue(a);返回的是基本數(shù)據(jù)類型int,
c==(a+b)他們之間是基本類型數(shù)值的比較,所以為true

包裝類的“==”運(yùn)算在不遇到算術(shù)運(yùn)算的情況下不會(huì)自動(dòng)拆箱
上面的c==(a+b)有+號(hào)是算術(shù)運(yùn)算符所以會(huì)自動(dòng)拆箱
如果是c==a,沒有算術(shù)運(yùn)算符不會(huì)拆箱,編譯報(bào)錯(cuò)Incompatible operand types Integer and Long

查看完整回答
反對(duì) 回復(fù) 2019-02-12
?
慕哥6287543

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊

c=a+b是c = a.intValue() + b.intValue()的簡(jiǎn)寫,兩個(gè)int相加結(jié)果還是int,必須顯示轉(zhuǎn)換為long才可以。比如c = (long)(a+b)。c==(a+b)是對(duì)比兩個(gè)reference是不是指向同一個(gè)對(duì)象,jvm會(huì)優(yōu)化一部分整數(shù),我記得是-128到128的object。如果有兩個(gè)整數(shù)一樣,會(huì)指向同一個(gè)對(duì)象。比如Integer a = 12; Integer b=12; a==b是true。

查看完整回答
反對(duì) 回復(fù) 2019-02-12
  • 2 回答
  • 0 關(guān)注
  • 448 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)