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 형태로 변경하는 게 좋다.