首頁  >  文章  >  Java  >  在 Java 8 及更高版本中如何安全地將 Long 轉換為 Int?

在 Java 8 及更高版本中如何安全地將 Long 轉換為 Int?

Susan Sarandon
Susan Sarandon原創
2024-10-26 09:36:30116瀏覽

How Can I Safely Cast a Long to an Int in Java 8 and Beyond?

在Java 中安全地將Long 轉換為Int(針對Java 8 更新)

在Java 中,從long 轉換為int 可能會導致在資料遺失中。為了解決這個問題,安全且慣用的方法是必不可少的。

Java 8 的Math.toIntExact() 方法

在Java 8 之前,建議的安全強制轉換方法long 到int 是為了檢查結果是否存在潛在的信息丟失。這涉及到將轉換結果與原始long 值進行比較:

<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 及更高版本中,已經引入了一個更為簡潔有效的方法:Math.toIntExact() 方法。此方法在發生溢位時會拋出ArithmeticException:

<code class="java">import static java.lang.Math.toIntExact;

long foo = 10L;
int bar = toIntExact(foo);</code>

Java 8 中的其他溢位安全方法

除了toIntExact() 之外,Java 8 還引入了其他幾種溢出- 以“exact”結尾的安全方法。這些方法在檢查潛在溢位的同時執行加法、減法、求反和減量等操作:

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

以上是在 Java 8 及更高版本中如何安全地將 Long 轉換為 Int?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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