先做一个范例:当前时间2011-05-18 10:27:01.89
程序输出: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