错误的将int定义为Integer造成程序无限执行下去,被骂惨

点击上方蓝色字体,选择“标星公众号”

优质文章,第一时间送达

小伙伴们,除夕夜2020块钱的微信现金拜年红包,你们接好

作者:头条/老徐聊技术

来源:http://suo.im/6eEXNK

前言:春节期间,坐在公司加班,本以为可以坐在那看看日志,打打游戏,聊会天一天就过去了,突然加群里我,为什么我的任务执行了快一上午了,怎么还是处理中。我随便应付说,可能是数据量大,执行时间长呗,过了2个小时还是没执行完,立即查看日志,发现一个Exception都没有,在看看log中是否打印了执行完毕的输出,发现没有,立马慌了。

当时真是脑袋翁的一下,这是啥问题,报个错也行呀。在本地项目中跑跑试试看。还是没发现问题,依旧不打印执行完毕的日志。那我就看看是不是判断出问题了。在判断的地方打印出前后比较的值。发现从128开始,128!=128,返回为false。这是什么情况?

128!=128

开始真的认为不可能呀,基本类型比较怎么还出现false了呢。后来一看代码。我把int定义成了Integer。瞬间明白了为什么?

大家都知道Integer是有缓存的,当数值在-128~127之间,是从缓存中取数据。

Integer缓存源码

这里给大家做个测试

定义Integer

定义int

总结:还好当时知道Integer的源码,看见128之后,想到了Integer的缓存,不然真的得找一会原因了。当你在面临压力面前还能心里不急躁的去找bug是办不到的,所以平时还是需要看看源码,另外,这纯是一种马虎行为,大家在平时开发一定要注意下。

说句题外话,springboot全家桶技术交流群可以加我微信,但是坑位有限哦,由于忙于工作,有时不能及时回复大家,请多包涵。


精彩推荐

1、小伙伴们,2020块钱的微信现金红包,你们接好2、我的面试标准:1.能干活;2.Java基础好;3.熟悉分布式框架3、技术选型:Redis客户端,选择Jedis还是Redisson?4、八幅漫画理解使用JWT设计单点登录系统5、JVM 性能调优监控工具 jps、jstack、jmap、jhat、jstat、hprof 使用详解6、未来有望干掉 Python 和 JavaScript 的编程语言7、冒着被开除风险也要给大家看看看这份Spring Cloud 总结8、全面了解 Nginx 主要应用场景

点个在看少个 bug

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值