Java錯誤:將int定義為Integer造成程序無限執行下去,128!=128

在本地項目中跑跑試試看。還是沒發現問題,依舊不打印執行完畢的日誌。那我就看看是不是判斷出問題了。在判斷的地方打印出前後比較的值。發現從128開始,128!=128,返回為false。這是什麼情況?

Java錯誤:將int定義為Integer造成程序無限執行下去,128!=128

128!=128

開始真的認為不可能呀,基本類型比較怎麼還出現false了呢。後來一看代碼。我把int定義成了Integer。瞬間明白了為什麼?

大家都知道Integer是有緩存的,當數值在-128~127之間,是從緩存中取數據。

Java錯誤:將int定義為Integer造成程序無限執行下去,128!=128

Integer緩存源碼

這裡給大家做個測試

Java錯誤:將int定義為Integer造成程序無限執行下去,128!=128

定義Integer

Java錯誤:將int定義為Integer造成程序無限執行下去,128!=128

定義int

總結:還好當時知道Integer的源碼,看見128之後,想到了Integer的緩存,不然真的得找一會原因了。 當你在面臨壓力面前還能心裡不急躁的去找bug是辦不到的,所以平時還是需要看看源碼,另外 這純是一種馬虎行為。大家在平時開發一定要注意下。


分享到:


相關文章: