Home > Java > javaTutorial > body text

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

Susan Sarandon
Release: 2024-10-26 09:36:30
Original
218 people have browsed it

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

Safely Casting Long to Int in Java (Updated for Java 8 )

In Java, casting from a long to an int can potentially result in data loss. To address this concern, a safe and idiomatic approach is essential.

Java 8's Math.toIntExact() Method

Prior to Java 8, the recommended method to safely cast a long to an int was to check the result for potential information loss. This involved comparing the cast result with the original long value:

<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>
Copy after login

However, in Java 8 and above, a更为简洁有效的方法已被引入:Math.toIntExact()方法。此方法在发生溢出时会抛出ArithmeticException:

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

long foo = 10L;
int bar = toIntExact(foo);</code>
Copy after login

Additional Overflow-Safe Methods in Java 8

In addition to toIntExact(), Java 8 introduced several other overflow-safe methods that end with "exact". These methods perform operations like addition, subtraction, negation, and decrementation while checking for potential overflows:

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

By utilizing Math.toIntExact() and these additional overflow-safe methods, you can safely cast long values to int and perform arithmetic operations without the risk of losing information.

The above is the detailed content of How Can I Safely Cast a Long to an Int in Java 8 and Beyond?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template