Heim > Java > javaLernprogramm > Hauptteil

Wie kann ich in Java 8 und höher sicher einen Long-Wert in einen Int-Wert umwandeln?

Susan Sarandon
Freigeben: 2024-10-26 09:36:30
Original
124 Leute haben es durchsucht

How Can I Safely Cast a Long to an Int in Java 8 and Beyond?

Sicheres Umwandeln von Long in Int in Java (aktualisiert für Java 8)

In Java kann es möglicherweise zu einem Umwandeln von Long in Int kommen bei Datenverlust. Um dieses Problem anzugehen, ist ein sicherer und idiomatischer Ansatz unerlässlich.

Math.toIntExact()-Methode von Java 8

Vor Java 8 die empfohlene Methode zum sicheren Umwandeln Ein long to an int bestand darin, das Ergebnis auf möglichen Informationsverlust zu überprüfen. Dies beinhaltete den Vergleich des Umwandlungsergebnisses mit dem ursprünglichen Long-Wert:

<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

In Java 8 und höher wurde jedoch ein „Math.toIntExact()“ verwendet发生溢出时会抛出ArithmeticException:

<code class="java">import static java.lang.Math.toIntExact;

long foo = 10L;
int bar = toIntExact(foo);</code>
Nach dem Login kopieren

Zusätzliche überlaufsichere Methoden in Java 8

Zusätzlich zu toIntExact() führte Java 8 mehrere andere Überläufe ein -sichere Methoden, die mit „exact“ enden. Diese Methoden führen Operationen wie Addition, Subtraktion, Negation und Dekrementierung aus und prüfen dabei auf mögliche Überläufe:

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

Durch Verwendung von Math.toIntExact () und diese zusätzlichen überlaufsicheren Methoden können Sie lange Werte sicher in int umwandeln und arithmetische Operationen ausführen, ohne dass das Risiko besteht, dass Informationen verloren gehen.

Das obige ist der detaillierte Inhalt vonWie kann ich in Java 8 und höher sicher einen Long-Wert in einen Int-Wert umwandeln?. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!