Java运算表达式中的一个小坑
public class TypeAutoTest {
public static void main(String [] args) {
long testLong = 3;
System.out.println(2592000 * 1000 - testLong - 1000);
}
}
上述代码运行后,输出的结果是一个负数。原因在于Java把2592000 * 1000看作int,结果超出int能容纳的范围,溢出成负数,所以结果也是负数。即使后面的testLong是long,java也是首先将前面的看做int,当遇到testLong的时候,再进行类型自动转换。
上述问题是一类问题,当在表达式中计算的时候,要注意int的范围,若是预估int不够存放结果,提前转换成long。