首頁  >  文章  >  Java  >  如何在 Java 中安全地將 long 轉換為 int:`toIntExact` 與明確檢查?

如何在 Java 中安全地將 long 轉換為 int:`toIntExact` 與明確檢查?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-26 22:11:03180瀏覽

How to Safely Convert a long to an int in Java:  `toIntExact` vs Explicit Checking?

將long 轉換為int 時避免截斷錯誤

在Java 中將long 值轉換為int 時,確保轉換是至關重要的不會導致資訊遺失。實現此目的的一種方法是透過明確檢查,如給定實作中所示:

<code class="java">public static int safeLongToInt(long l) {
    int i = (int)l;
    if ((long)i != l) {
        throw new IllegalArgumentException(l + " cannot be cast to int without changing its value.");
    }
    return i;
}</code>

但是,自Java 8 以來,引入了更慣用的解決方案:

數學.toIntExact()

此方法透過在發生溢出時拋出ArithmeticException 來實現安全的long 到int 轉換:

<code class="java">import java.lang.Math;
...
long foo = 10L;
int bar = Math.toIntExact(foo);</code>

Java 8 也包含類似的「精確」方法用於各種算術運算,確保準確性並避免意外的精度損失:

  • Math.incrementExact(long)
  • Math.subtractExact(long, long)
  • Math .decrementExact(long)
  • Math.negateExact(long)
  • Math.subtractExact(int, int)

透過使用這些方法,開發人員可以自信地轉換long值轉換為int,而不存在因溢出而導致資料遺失或執行時間異常的風險。

以上是如何在 Java 中安全地將 long 轉換為 int:`toIntExact` 與明確檢查?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn