小心分配 Java 中的长值以避免溢出\n
在 Java 中进行整数值操作时,我们需要注意整数的不足和溢出条件。考虑到 Java 中的 int 数据类型是 32 位带符号二进制补码整数,其最小值为 -2,147,483,648,最大值为 2,147,483,647。如果一个值超出了最大可能值,则该值会回退到最小值并从该最小值继续。以类似的方式,它发生在一个值小于最小值的情况下。请看以下示例。
示例
public class Tester {
public static void main(String[] args) {
//Scenario 1:
//Assigning int value to long causing overflow
long MICROSECONDS_A_DAY = 24 * 60 * 60 * 1000 * 1000;
System.out.println(MICROSECONDS_A_DAY);
//Scenario 2:
//Assigning long value causing no overflow
MICROSECONDS_A_DAY = 24L * 60 * 60 * 1000 * 1000;
System.out.println(MICROSECONDS_A_DAY);
}
}输出
500654080 86400000000
需要考虑的要点
尽管我们在场景 1 中使用了长变量,但乘法运算基于 int,导致 int 溢出。因此,输出不正确。
在场景 2 中,我们强制乘法运算基于归属,得到正确的结果。
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP