Java基础 | 定义long类型不指定后缀的后果

2023-05-05 19:52:13 浏览数 (1)

今天见到一个有意思的现象:

代码语言: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 后缀。

0 人点赞