在Java 中安全地將Long 轉換為Int(針對Java 8 更新)
在Java 中,從long 轉換為int 可能會導致在資料遺失中。為了解決這個問題,安全且慣用的方法是必不可少的。
Java 8 的Math.toIntExact() 方法
在Java 8 之前,建議的安全強制轉換方法long 到int 是為了檢查結果是否有潛在的信息丟失。這涉及將轉換結果與原始 long 值進行比較:
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;
}
然而,在Java 8以上版本中,已經引入了一個更為簡潔有效的方法:Math.toIntExact()方法。此方法在發生溢位時會拋出ArithmeticException:
import static java.lang.Math.toIntExact;
long foo = 10L;
int bar = toIntExact(foo);
Java 8 中其他溢出安全方法
除了toIntExact() 之外,Java 8 還引入了其他幾種溢出安全方法以「精確」結尾。這些方法執行加法、減法、求反和減量等操作,同時檢查潛在的溢出:
透過利用Math.toIntExact () 和這些附加的溢位安全方法,您可以安全地將long 值轉換為int並執行算術運算,而不會遺失資訊的風險。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3