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