您的位置:首页 > 编程语言 > Java开发

注意java int整形变量的取值范围

2011-05-18 10:28 232 查看
先做一个范例:当前时间2011-05-18 10:27:01.89

//24 * 60 * 60 * 1000 表示一天的毫秒数,乘于24表示24天
long daylong=24* 24 * 60 * 60 * 1000;
//System.currentTimeMillis()-daylong表示当前时间减去24天的时间
Timestamp t = new Timestamp(System.currentTimeMillis() - daylong);
//打印时间
System.out.println(t);


程序输出:2011-04-24 10:27:01.89

当daylong中第一个24改为25时,猜猜输出是什么?2011-04-23 10:27:01.89


错了,程序输出是:2011-06-12 03:27:01.89
,为什么?

这是因为25* 24 * 60 * 60 * 1000已经超出整形int的范围了,在java中,int取值取值范围为:-2^31~2^31-1
即:-2147483648~2147483647

在int取值范围下,24* 24 * 60 * 60 * 1000=2073600000
,而25* 24 * 60 * 60 * 1000=-2134967296


解决办法:强制类型转换为long类型, long daylong=(long)25* 24 * 60 * 60 * 1000
;此时daylong=2160000000

程序正确输出:2011-04-23 10:27:01.89
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: