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+ 瀏覽量

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告