小心分配 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 中,我們強制乘法運算基於歸屬,得到正確的結果。

更新於: 2020 年 6 月 18 日

224 次瀏覽次數

開啟你的 職業

完成課程並獲得認證

開始
廣告