在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”結尾的安全方法。這些方法在檢查潛在溢位的同時執行加法、減法、求反和減量等操作:
以上是在 Java 8 及更高版本中如何安全地將 Long 轉換為 Int?的詳細內容。更多資訊請關注PHP中文網其他相關文章!