너와 나의 개발 고리

[JAVA] chap02 변수와 타입_강제 타입 변환 본문

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만 저장

 

강제 타입 변환이 생기는 예제를 보면 이해하기 쉽다.