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是办不到的,所以平时还是需要看看源码,另外 这纯是一种马虎行为。大家在平时开发一定要注意下。


分享到:


相關文章: