小心為 java 中的長值分配以避免溢位\n


在 Java 中對整型值進行運算時,我們需要了解 int 型別的下溢和上溢條件。鑑於在 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 中使用了一個 long 變數,但乘法運算基於 int 導致 int 上溢。因此,輸出不正確。

  • 在場景 2 中,我們強制乘法運算基於長整型,從而得到了正確的結果。

更新於:2020 年 6 月 18 日

225 次觀看

啟動您的 職業生涯

完成該課程以獲得認證

開始學習
廣告
© . All rights reserved.