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 后缀。

posted @ 2021-01-19 21:57  IT当时语_青山师  阅读(16)  评论(0)    收藏  举报  来源