JAVA/이것이 자바다
[JAVA] chap02 변수와 타입_강제 타입 변환
Oli-Viaaaa
2023. 8. 5. 16:52
강제 타입 변환은 큰 허용 범위 타입을 작용 허용 범위 타입으로 쪼개서 저장하는 것을 말하며 캐스팅 연산자로 괄호()를 사용한다.
강제 타입의 목적은 원래 값이 유지되면서 타입만 바꾸는 것으로 작은 허용 범위 타입에 저장될 수 있는 값을 가지고
강제 타입 변환을 해야한다.

int → byte
int 타입은 byte 타입보다 더 큰 허용 범위를 가진다.
따라서 int 타입은 byte 타입으로 자동 변환되지 않고,
(byte) 캐스팅을 해서 byte 타입으로 강제 변환시켜야 한다.
int intValue = 10;
byte byteValue = (byte) intValue; // 강제 타입 변환
long → int
long 타입은 int 타입보다 큰 허용 범위를 가진다.
따라서 long 타입은 int 타입으로 자동변환되지 않고, (int)캐스팅을 해서 강제 변환시켜야 한다.
int 타입으로 강제 변환하면 앞 4byte는 버려지고 끝4byte만 int 타입 변수에 저장된다.
long longValue = 300;
int intValue = (int) longValue; // 강제 타입 변환 후에 300이 그대로 유지
int → char
int 타입은 char 타입보다 큰 허용 범위를 가진다.
따라서 int 타입은 char 타입으로 자동 변환되지 않고, (char) 캐스팅을 해서 강제 변환시켜야 한다.
주의할 점은 char 타입의 허용 범위인 0 ~ 65535 사이의 값만 원래의 값을 유지한다.
int intValue = 65;
char charValue = (char) intValue;
System.out.println(charValue); //'A'가 출력
실수 → 정수
실수 타입(float, double)은 정수 타입(byte, short, int, long)보다 항상 큰 허용 범위를 가진다.
따라서 대상 정수 타입으로 캐스팅해서 강제 변환시켜야 한다.
이 경우 소수점 이하 부분은 버려지고 정수 부분만 저장된다.
double doubleValue = 3.14;
int intValue = (int) doubleValue; // intValue는 정수 부분인 3만 저장
강제 타입 변환이 생기는 예제를 보면 이해하기 쉽다.
