將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 也包含類似的「精確」方法用於各種算術運算,確保準確性並避免意外的精度損失:
透過使用這些方法,開發人員可以自信地轉換long值轉換為int,而不存在因溢出而導致資料遺失或執行時間異常的風險。
以上是如何在 Java 中安全地將 long 轉換為 int:`toIntExact` 與明確檢查?的詳細內容。更多資訊請關注PHP中文網其他相關文章!