锁定老帖子 主题:一个隐形的java int溢出
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2011-08-30
这个确实很隐晦啊
|
|
返回顶楼 | |
发表时间:2011-08-30
float x=0.0F long x = 111L;一般都需要这样规范的
哪怕线程休眠一秒的时候也习惯这么写Thread.sleep(1000L); |
|
返回顶楼 | |
发表时间:2011-08-30
一般需要各种时间的转换我会这样写TimeUnit.DAYS.toMillis(60)
|
|
返回顶楼 | |
发表时间:2011-08-30
最后修改:2011-08-30
没养成好习惯吧,我一般用long型常量都会习惯明确加上L后缀
60 * 24 * 3600 * 1000都是int型的,结果超出Long.MaxValue自然就溢出了 |
|
返回顶楼 | |
发表时间:2011-08-30
Crusader 写道 没养成好习惯吧,我一般用long型常量都会习惯明确加上L后缀
60 * 24 * 3600 * 1000都是int型的,结果超出Long.MaxValue自然就溢出了 是超出了Integer.MaxValue吧,呵呵。 |
|
返回顶楼 | |
发表时间:2011-08-30
guoapeng 写道 这个bug经典,effective java 里面有讲到这一点,
Java的隐式转换确实问题很多。 1/4+3/4 =? 的问题虽然很基础,但是很重要。 类似的问题,算术计算方面的,谁来总结一下。 这个习惯好..小弟学着 |
|
返回顶楼 | |
发表时间:2011-08-30
不容易发现的手误。
|
|
返回顶楼 | |
发表时间:2011-08-30
这种“笔误”只有上线才能发现,这才是最可怕的。
|
|
返回顶楼 | |
发表时间:2011-08-30
收藏 记下
|
|
返回顶楼 | |
发表时间:2011-08-30
细节上的东西,真是不好查。学习了,以后用long 直接加suffix省的麻烦
|
|
返回顶楼 | |