Heim  >  Artikel  >  Java  >  Wie konvertiert man in Java sicher einen Long-Wert in einen Int-Wert: „toIntExact“ vs. explizite Prüfung?

Wie konvertiert man in Java sicher einen Long-Wert in einen Int-Wert: „toIntExact“ vs. explizite Prüfung?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-26 22:11:03180Durchsuche

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

Vermeiden von Kürzungsfehlern beim Umwandeln von long in int

Beim Konvertieren eines long-Werts in einen int in Java ist es wichtig, sicherzustellen, dass die Konvertierung erfolgt führt nicht zu Informationsverlust. Eine Möglichkeit, dies zu erreichen, ist die explizite Prüfung, wie in der angegebenen Implementierung gezeigt:

<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>

Seit Java 8 wurde jedoch eine idiomatischere Lösung eingeführt:

Math .toIntExact()

Diese Methode ermöglicht eine sichere Long-in-Int-Konvertierung, indem bei einem Überlauf eine ArithmeticException ausgelöst wird:

<code class="java">import java.lang.Math;
...
long foo = 10L;
int bar = Math.toIntExact(foo);</code>

Java 8 enthält auch ähnliche „exakte“ Methoden für verschiedene arithmetische Operationen, um Genauigkeit sicherzustellen und unerwartete Präzisionsverluste zu vermeiden:

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

Durch die Verwendung dieser Methoden können Entwickler sicher long umwandeln Werte in int konvertieren, ohne dass das Risiko eines Datenverlusts oder von Laufzeitausnahmen aufgrund eines Überlaufs besteht.

Das obige ist der detaillierte Inhalt vonWie konvertiert man in Java sicher einen Long-Wert in einen Int-Wert: „toIntExact“ vs. explizite Prüfung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn