Heim  >  Artikel  >  Java  >  Wie können Sie in Java sicher einen Long-Wert in einen Int-Wert umwandeln?

Wie können Sie in Java sicher einen Long-Wert in einen Int-Wert umwandeln?

DDD
DDDOriginal
2024-10-26 14:59:31538Durchsuche

How Can You Safely Cast a Long to an Int in Java?

Sicheres Umwandeln von Long in Int in Java

Das Umwandeln von Long in Int kann möglicherweise zu Informationsverlusten führen. Um dies zu verhindern, muss unbedingt überprüft werden, dass die Umwandlung den Wert nicht verändert.

Traditioneller Ansatz:

Ein gängiger Ansatz besteht darin, in einen Int umzuwandeln und dann zurück zu konvertieren zu lange, um die Gleichheit zu prüfen. Allerdings weist diese Methode eine Einschränkung auf: Sie schlägt bei Werten größer als 2^31-1 fehl.

Java 8-Lösung:

Java 8 führte eine robustere Lösung ein: Math.toIntExact(long). Diese Methode löst eine ArithmeticException aus, wenn die Umwandlung zu einem Überlauf führt.

<code class="java">long foo = 10L;
int bar = Math.toIntExact(foo); // Throws ArithmeticException on overflow</code>

Andere überlaufsichere Methoden:

Zusätzlich zu toIntExact hat Java 8 auch mehrere andere hinzugefügt Überlaufsichere Methoden, die mit „exact“ enden. Zu diesen Methoden gehören:

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

Die Verwendung dieser Methoden gewährleistet die Integrität Ihrer Daten und verhindert unerwartete Ganzzahlüberläufe.

Das obige ist der detaillierte Inhalt vonWie können Sie in Java sicher einen Long-Wert in einen Int-Wert umwandeln?. 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