java中基本数据类型int的取值范围为-2,147,483,648(-2^31)到2,147,483,647
所以在可能出现数值溢出时一定要注意,因为系统是不会报错的,而是使用一个错误的数据
当直接赋值时会出现警告,如下:
此时的数值差异如下:
int one = 5* 30 * 24 * 60 * 60 * 1000;
//75098112
System.out.println(one);
long two = 5* 30 * 24 * 60 * 60 * 1000L;
//12960000000
System.out.println(two);
当整型变量或者变量表达式出现数值溢出时往往不太能察觉到,例如下面的代码:
int period = 5;
long date = System.currentTimeMillis() + period * 30 * 24 * 60 * 60 * 1000;
//Tue Jul 14 17:02:44 CST 2020
System.out.println(new Date(date));
其正确的结果为以下:
int period = 5;
long date = System.currentTimeMillis() + period * 30 * 24 * 60 * 60 * 1000L;
//Thu Dec 10 20:12:24 CST 2020
System.out.println(new Date(date));