锁定老帖子 主题:一个隐形的java int溢出
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-31
一个比较重型的做法:
不要用表达式为变量赋值。 而是写一个 int msgInvalidDue()方法。 既然有了方法,自然给这个方法加上unit test 这样,bug 就不会被带到系统运行时了。 |
|
返回顶楼 | |
发表时间:2011-08-31
后人哀之而不鉴之,亦使后人而复哀后人也
|
|
返回顶楼 | |
发表时间:2011-08-31
我昨天也遇到这个问题,排查了很久,后来总算解决了,还是自己功力不够!
|
|
返回顶楼 | |
发表时间:2011-08-31
定义长整形,尽量在一个后面加个大写的L
private long msgInvalidDue = 60L * 24 * 3600 * 1000; |
|
返回顶楼 | |
发表时间:2011-08-31
太隐蔽了,我遇到过两个整数相除本来是想取浮点除的结果值,结果出来的整除的结果值,后来在除之前剩以1.0哈哈
|
|
返回顶楼 | |
发表时间:2011-08-31
楼主这种大牛也会犯这种低级错误,看来还是基础重要。
|
|
返回顶楼 | |
发表时间:2011-09-01
借助工具可以解决!
|
|
返回顶楼 | |
发表时间:2011-09-01
收藏这个问题了
|
|
返回顶楼 | |
发表时间:2011-09-01
血的教训 大得Bug
|
|
返回顶楼 | |
发表时间:2011-09-03
还真没有注意过这类问题,长见识了
|
|
返回顶楼 | |