Heim > Java > javaLernprogramm > 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
Freigeben: 2024-10-26 22:11:03
Original
289 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage