Java 명시적 형 변환

형 변환은 변수의 타입을 변경해주는 기능

현재 값보다 크기가 작은 값으로 형 변환이 필요할 때 명시적(강제)으로 형 변환을 해주어야 한다.

Java 큰 수 > 작은 수로 강제 형 변환하는 코드

long maxIntValue = 2147483647L;
int intValue= 0 ;

intValue = (int) maxIntValue;
System.out.println("intValue = " + intValue);
  • 참고: (int) 타입을 지정하지 않으면 묵시적 형 변환으로 컴파일 에러가 발생한다.

출력 값:

intValue = 2147483647

묵시적 형 변환이 정상적으로 동작하는 것을 확인할 수 있는데 만약 int형을 넘게되면 오버플로우가 발생한다. 어떻게 표현되는지 확인해보도록 한다.

Java 형 변환시 오버플로우 발생하는 코드

long maxIntOver = 2147483648L;
int intValue= 0;

intValue = (int) maxIntOver;
System.out.println("intValue = " + intValue);

출력 값:

intValue = -2147483648

보다시피 출력 값에서 음수로 표현되는 것을 확인할 수 있다. int형 오버플로우가 발생하면 음수부터 시작되니 주의해서 사용 한다.

이런 경우는 int형 최대 크기 이상 못 넣게 하는 것보다 큰 값을 담을 수 있도록 intValue 변수를 long 형태로 변경하는 게 좋다.