注意java int整形变量的取值范围
2011-05-18 10:28
232 查看
先做一个范例:当前时间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
//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
相关文章推荐
- Java中变量所占字节大小及有效取值范围
- java整型byte,short,int,long取值范围大小
- java基础之面试篇三---int,float,long,double取值范围,内存泄露
- java整型byte,short,int,long取值范围大小
- poj 3104(二分,注意int类型的取值范围)
- java中int,float,long,double取值范围,内存泄露
- 计算char,short,int,long类型变量的取值范围
- java基础之面试篇三---int,float,long,double取值范围,内存泄露
- Java中int的取值范围
- Java中int,float,long,double取值范围,内存泄露
- java中int,float,long,double取值范围,内存泄露
- Java中int的取值范围
- Java中int的取值范围
- 【MYSQL】定义整形变量时需要注意范围的问题
- 整形数据取值范围(int、long、long long)
- java中short、int、long、float、double取值范围
- 打印分别由signed和unsigned限定的char , short, int ,与long类型变量的取值范围。
- java中short、int、long、float、double取值范围
- java整型byte,short,int,long取值范围大小
- short int 变量的取值范围