我们先来看一个短小的程序:
public class LongDivison{
public static void main(String[ ] args){
final long millise_per_day = 24*60*60*1000;
final long micros_per_day = 24*60*60*1000*1000;
System.out.println(micros_per_day / millise_per_day);
}
}
其实millise_per_day表示一天中的毫秒数,micros_per_day表示一天中的微妙数,初看结果输出结果应该是1000,但是本程序的结果是5,为什么呢?也许有人会想是因为值太大了超出了long型所能表示的数,但是其实不然,原来JAVA中是首先把micro_per_day的数值计算出来,(注意结果是int型,因为24,60等的数字都是int型的),结果是int型的,已经溢出了,然后再把int型提升为了long型,此时micros_per_day已经比真实值小了200倍,所以结果也是5。正确的写法应该如下:
public class LongDivison{
public static void main(String[ ] args){
final long millise_per_day = 24L*60*60*1000;
final long micros_per_day = 24L*60*60*1000*1000;
System.out.println(micros_per_day / millise_per_day);
}
}