编码最佳实践(1)--小心"数据溢出" (二)

2014-11-24 08:16:56 · 作者: · 浏览: 5
0 * 24 * 7;
long msOf30Days = 1000 * 60 * 60 * 24 * 30;
System.out.println("msOfDay = " + msOfDay);
System.out.println("msOfWeek = " + msOfWeek);
System.out.println("msOf30Days = " + msOf30Days);

输出结果为:
msOfDay = 86400000
msOfWeek = 604800000
msOf30Days = -1702967296

发现msOf30Days发生数据溢出了,但是明明这里long可以容纳的下计算结果的。问题发生在”1000 * 60 * 60 * 24 * 30“,这里都是int,因此操作的结果也是一个int,在赋值给long之前就已经溢出了。解决的方法就是提前转为long,“long msOf30Days = 1000L * 60 * 60 * 24 * 30;”,这样就OK了。

作者:sky ao