>  기사  >  Java  >  Java 8 이상에서 Long을 Int로 안전하게 캐스팅하려면 어떻게 해야 합니까?

Java 8 이상에서 Long을 Int로 안전하게 캐스팅하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-26 09:36:30116검색

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

Java에서 Long을 Int로 안전하게 캐스팅(Java 8용 업데이트)

Java에서 long을 int로 캐스팅하면 잠재적으로 결과가 발생할 수 있습니다. 데이터 손실. 이러한 문제를 해결하려면 안전하고 관용적인 접근 방식이 필수적입니다.

Java 8의 Math.toIntExact() 메서드

Java 8 이전에는 안전한 캐스팅을 위해 권장되는 방법입니다. int에 대한 long은 잠재적인 정보 손실에 대한 결과를 확인하는 것이었습니다. 여기에는 캐스트 결과를 원래의 긴 값과 비교하는 작업이 포함됩니다.

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

그러나 Java 8 이상에서는 更为简洁有效적 방법已被引入:Math.toIntExact()방법법。此방법이 있습니다.发生溢 Out时会抛takeArithmeticException:

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

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

Java 8의 추가 오버플로 안전 메서드

Java 8에서는 toIntExact() 외에도 여러 가지 다른 오버플로를 도입했습니다. - "정확한"으로 끝나는 안전한 방법. 이러한 메서드는 잠재적인 오버플로를 확인하면서 더하기, 빼기, 부정 및 감소와 같은 작업을 수행합니다.

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

Math.toIntExact 활용 () 및 추가 오버플로 방지 메서드를 사용하면 긴 값을 int로 안전하게 캐스팅하고 정보 손실 위험 없이 산술 연산을 수행할 수 있습니다.

위 내용은 Java 8 이상에서 Long을 Int로 안전하게 캐스팅하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.