Java基础 | 定义long类型不指定后缀的后果
今天见到一个有意思的现象:
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
调整代码后:
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 后缀。