더북(TheBook)

034 long을 int로 변환

 

long 값을 int 값으로 변환하기는 쉬워 보인다. 아래처럼 캐스팅을 사용하면 된다.

long nr = Integer.MAX_VALUE;
int intNrCast = (int) nr;

혹은 다음과 같이 Long.intValue()를 활용하는 방법도 있다.

int intNrValue = Long.valueOf(nrLong).intValue();

두 방식 모두 잘 동작한다. 이번에는 long 값이 다음과 같다고 가정하자.

long nrMaxLong = Long.MAX_VALUE;

이렇게 하면 위 두 방식 모두 -1을 반환한다. 올바른 결과를 얻으려면 JDK 8의 Math.toIntExact()를 사용하는 것이 좋다. 이 메서드는 long 타입의 인자를 받아 int로 변환한다. 받은 값이 int를 초과하면 ArithmeticException을 던진다.

// ArithmeticException을 던진다
int intNrMaxExact = Math.toIntExact(nrMaxLong);

toIntExact()는 내부적으로 ((int)value != value)라는 조건을 사용한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.