java puzzle里的一个例子,有点意思,这个方法会打印什么结果?
public void longDivsion(){
long micros = 24 * 60 * 60 * 1000 * 1000;
long millis = 24 * 60 * 60 * 1000;
System.out.println(micros/millis);
}
输出的结果是5!
long micros = 24 * 60 * 60 * 1000 * 1000,等号右边得到的结果为整型然后转换成long并赋值给micros,如果得到的结果超过整型的范围,那么在转化成long时必然是个错误的结果。
正确的写法是:
long micros1 = 24L * 60 * 60 * 1000 * 1000;
long millis1 = 24L * 60 * 60 * 1000;
System.out.println(micros1/millis1);
public void longDivsion(){
long micros = 24 * 60 * 60 * 1000 * 1000;
long millis = 24 * 60 * 60 * 1000;
System.out.println(micros/millis);
}
输出的结果是5!
long micros = 24 * 60 * 60 * 1000 * 1000,等号右边得到的结果为整型然后转换成long并赋值给micros,如果得到的结果超过整型的范围,那么在转化成long时必然是个错误的结果。
正确的写法是:
long micros1 = 24L * 60 * 60 * 1000 * 1000;
long millis1 = 24L * 60 * 60 * 1000;
System.out.println(micros1/millis1);
本文探讨了Java中长整数(long)运算的一个常见陷阱,通过一个具体的例子展示了当乘法操作的结果超过了整型变量的最大表示范围时所导致的问题,并给出了正确的解决方法。
2762

被折叠的 条评论
为什么被折叠?



