class TestVeriable{ ? ? ? ?public static void main(String[] args){ ? ? ? ? ? ? ? long l = 12; ? ? ? ? ? ? ? float f = l; ? ? ? ? ? ? ? System.out.println(f); ? ? ? ? }}long不是8字節(jié)的嗎?為什么轉(zhuǎn)換成4字節(jié)的float可以直接通過(guò)?不報(bào)錯(cuò)
2 回答
已采納

JustWannaHugU
TA貢獻(xiàn)452條經(jīng)驗(yàn) 獲得超796個(gè)贊
你這樣寫(xiě)頂多會(huì)發(fā)生數(shù)據(jù)溢出精度失常,但不至于報(bào)錯(cuò)
int是最通常用的整數(shù)類(lèi)型,通常情況下,一個(gè)java整數(shù)常量默認(rèn)的就是int類(lèi)型,除此之外,如果使用一個(gè)巨大的整數(shù)常量(超過(guò)了int類(lèi)型的表述范圍)java不會(huì)自動(dòng)把這個(gè)整數(shù)常量當(dāng)成long類(lèi)型來(lái)處理,如果希望系統(tǒng)把一個(gè)整型常量當(dāng)作long類(lèi)型來(lái)處理,應(yīng)在這個(gè)整數(shù)常量后加上L作為后綴
所以你舉得例子就能解釋了,表述范圍小的 l 當(dāng)讓能夠順理成章的直接付給另一個(gè)表數(shù)范圍大的float f 了,屬于系統(tǒng)的自動(dòng)類(lèi)型轉(zhuǎn)換
以上,望采納
添加回答
舉報(bào)
0/150
提交
取消