论坛首页 Java企业应用论坛

一个隐形的java int溢出

浏览 30246 次
该帖已经被评为良好帖
作者 正文
   发表时间:2011-08-30  
pxlfxl2 写道
Crusader 写道
没养成好习惯吧,我一般用long型常量都会习惯明确加上L后缀

60 * 24 * 3600 * 1000都是int型的,结果超出Long.MaxValue自然就溢出了


是超出了Integer.MaxValue吧,呵呵。


恩,笔误了
0 请登录后投票
   发表时间:2011-08-30  
之前也有碰到这种问题,导致的程序逻辑错误
0 请登录后投票
   发表时间:2011-08-30  
恩恩!学到了!以后要注意,回去赶快检查代码!哈哈
0 请登录后投票
   发表时间:2011-08-31  
private long msgInvalidDue = 60 * 24 * 3600 * 1000; 
楼主展示的错误代码,是可以正确运行的。是不是应该是:
private int msgInvalidDue = 60 * 24 * 3600 * 1000; 
0 请登录后投票
   发表时间:2011-08-31  
血的教训,很有代表性
0 请登录后投票
   发表时间:2011-08-31  
学习了,真没注意过
0 请登录后投票
   发表时间:2011-08-31  
多谢楼主,学习了.项目中确实有这类隐含的BUG
0 请登录后投票
   发表时间:2011-08-31  
昨天晚上刚下的订单《effective java》今天就收到了。看来这本书没买错啊
0 请登录后投票
   发表时间:2011-08-31  
虽然现在没遇到过,如果不看楼主这个帖子,有一天就会在发生在自己身上了
0 请登录后投票
   发表时间:2011-08-31  
这个bug相当隐晦啊,楼主神童也
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics