ITPub博客

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

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

作者:孤独键客 时间:2020-05-15 15:59:20 0 删除 编辑
程序员的成长之路
互联网/程序员/成长/职场 
关注


阅读本文大概需要 1.2 分钟。

作者:头条/老徐聊技术
来源: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是办不到的,所以平时还是需要看看源码,另外,这纯是一种马虎行为,大家在平时开发一定要注意下。

<END>

推荐阅读:

面试了一个 46 岁程序员,思绪万千

别乱提交代码了,看下大厂 Git 提交规范是怎么做的!


微信扫描二维码,关注我的公众号

写留言

朕已阅 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69902700/viewspace-3171017/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
一个不羁的码农,终身学习者。公众号「程序员的成长之路」。目前就职于一家游戏公司,主要负责服务器端,以及web系统的开发工作,对Java相关知识比较擅长。

注册时间:2018-12-14

  • 博文量
    793
  • 访问量
    119791