今天见到一个有意思的现象:
代码语言:javascript复制long a = 60*60*24*1000;
long b = 60*60*24*1000*1000;
System.out.println(a);
System.out.println(b);
System.out.println(b / a);
运行输出:
86400000 500654080 5
调整代码后:
代码语言:javascript复制long a = 60*60*24*1000L;
long b = 60*60*24*1000*1000L;
System.out.println(a);
System.out.println(b);
System.out.println(b / a);
再运行输出:
86400000 86400000000 1000
原因是这样的,字面量类型java中默认采用整型而int最大值(2^31-1,2147483647),所以如果声明: long b = 60*60*24*1000*1000表达式的结果为86400000000已经溢出
。所以在使用较大的long类型数据时,记得增加L 或者 l 后缀。