ホームページ > Java > &#&チュートリアル > Java で long を int に安全に変換する方法: `toIntExact` と明示的チェック?

Java で long を int に安全に変換する方法: `toIntExact` と明示的チェック?

Mary-Kate Olsen
リリース: 2024-10-26 22:11:03
オリジナル
290 人が閲覧しました

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

long から int へのキャスト時の切り捨てエラーの回避

Java でlong 値を int に変換する場合、変換が情報の損失にはつながりません。これを実現する 1 つの方法は、次の実装で示されているように、明示的なチェックを行うことです。

<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 をスローすることで、long から int への安全な変換を可能にします。

<code class="java">import java.lang.Math;
...
long foo = 10L;
int bar = Math.toIntExact(foo);</code>
ログイン後にコピー

Java 8 には、同様の "exact" メソッドも含まれていますさまざまな算術演算で精度を確保し、予期せぬ精度の損失を回避します:

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

これらのメソッドを利用することで、開発者は自信を持って long をキャストできます。データ損失やオーバーフローによる実行時例外のリスクなしに、値を int に変換できます。

以上がJava で long を int に安全に変換する方法: `toIntExact` と明示的チェック?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート