>  기사  >  Java  >  Java에서 long을 int로 안전하게 변환하는 방법: `toIntExact`와 명시적 검사?

Java에서 long을 int로 안전하게 변환하는 방법: `toIntExact`와 명시적 검사?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-26 22:11:03180검색

How to Safely Convert a long to an int in Java:  `toIntExact` vs Explicit Checking?

long을 int로 변환할 때 잘림 오류 방지

Java에서 long 값을 int로 변환할 때 변환이 제대로 이루어지도록 하는 것이 중요합니다. 정보의 손실로 이어지지 않습니다. 이를 달성하는 한 가지 방법은 주어진 구현에서 설명한 대로 명시적 검사를 이용하는 것입니다.

<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부터는 보다 관용적인 솔루션이 도입되었습니다.

수학 .toIntExact()

이 메서드를 사용하면 오버플로가 발생할 때 ArithmeticException을 발생시켜 long에서 int로 안전하게 변환할 수 있습니다.

<code class="java">import java.lang.Math;
...
long foo = 10L;
int bar = Math.toIntExact(foo);</code>

Java 8에는 유사한 "정확한" 메서드도 포함되어 있습니다. 다양한 산술 연산을 위해 정확성을 보장하고 예상치 못한 정밀도 손실 방지:

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

이러한 방법을 활용하여 개발자는 자신있게 long 형을 캐스팅할 수 있습니다. 오버플로로 인한 데이터 손실이나 런타임 예외 위험 없이 int 값을 반환합니다.

위 내용은 Java에서 long을 int로 안전하게 변환하는 방법: `toIntExact`와 명시적 검사?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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