Java 溢出和下溢


溢出

当我们为变量分配一个超过最大允许值的数值时,就会发生溢出。

下溢

当我们为变量分配一个低于最小允许值的数值时,就会发生下溢。

JVM 在发生溢出或下溢时不会抛出任何异常,它只是简单地更改值。程序员有责任检查溢出/下溢条件的可能性并相应地采取措施。

示例(溢出)

考虑 int 变量的情况,它是 32 位的,任何超过 Integer.MAX_VALUE (2147483647) 的值都会回绕。例如,Integer.MAX_VALUE + 1 返回 -2147483648 (Integer.MIN_VALUE)。

由于 int 数据类型在 Java 中是 32 位的,因此任何超过 32 位的值都会回绕。从数值上讲,这意味着在 Integer.MAX_VALUE (2147483647) 上递增 1 后,返回的值将是 -2147483648。事实上,您不需要记住这些值,可以使用常量 Integer.MIN_VALUE 和 Integer.MAX_VALUE。

int 的下溢

下溢与溢出相反。在溢出的情况下,我们达到上限,而在下溢的情况下,我们达到下限。因此,在从 Integer.MIN_VALUE 减去 1 后,我们到达 Integer.MAX_VALUE。在这里,我们从 int 的最小值回绕到最大值。

对于非整数类型的数据类型,溢出和下溢会导致 INFINITY 和 ZERO 值。

更新于: 2020-06-15

3K+ 浏览量

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告