Long.intValue變成-1到導(dǎo)致的問題

在 Java 中,將 long 類型轉(zhuǎn)換為 int 時(shí),如果 long 的值超出了 int 的范圍,就會(huì)發(fā)生溢出,導(dǎo)致結(jié)果為負(fù)數(shù)。具體來說, int 類型的取值范圍是從 -2,147,483,648 到 2,147,483,647,而 long 類型的取值范圍更大(從 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807)。

為什么會(huì)變成 -1

當(dāng)你將一個(gè) long 值轉(zhuǎn)換為 int 時(shí),Java 只會(huì)取 long 值的低 32 位(即 int 的有效位數(shù))。如果這個(gè)低 32 位的值恰好是 0xFFFFFFFF (即二進(jìn)制的 32 個(gè) 1),那么轉(zhuǎn)換后的 int 值就會(huì)是 -1。

Long num = Long.MAX_VALUE;
int i = num.intValue();
System.out.println(i)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容