타입 변환이란 데이터 타입을 다른 데이터 타입으로 변환하는 것을 말한다.
예) byte
↔ int
타입 변환에는 두 가지 종류가 있다.
1. 자동 (묵시적) 타입 변환
2. 강제 (명시적) 타입 변환
자동 타입 변환(
Promotion
)은 프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것을 말한다.
📌 크기별로 타입 정리
byte(1)
<short(2)
<int(4)
<long(8)
<float(4)
<double(8)
float
를 int
, long
보다 큰 타입으로 표시한 이유는 표현할 수 있는 범위가 float
가 더 때문이다!public class PromotionExample {
byte byteValue = 10;
int intValue = byteValue; // int <- byte
System.out.println(intValue);
char charValue = '가';
intValue = charValue; // int <- char
System.out.println("가의 유니코드 = " + intValue);
intValue = 500;
long longValue = intValue; // long <- int
System.out.println(longValue);
intValue = 200;
double doubleValue = intValue; // double <- int
System.out.println(doubleValue);
}
10
가의 유니코드 = 44032
500
200.0
강제 타입 변환(
Casting
)은 강제적으로 큰 데이터 타입을 작은 데이터 타입으로 쪼개어서 저장하는 것을 말한다.
()
을 사용하는데, 괄호 안에 들어가는 타입은 쪼개는 단위이다.public class CastingExample {
int intValue = 44032;
char charValue = (char) intValue;
System.out.println(charValue);
long longValue = 500;
intValue = (int) longValue;
System.out.println(intValue);
double doubleValue = 3.14;
intValue = (int) doubleValue;
System.out.println(intValue);
}
가
500
3
연산은 기본적으로 같은 타입의 피연산자(
operand
) 간에만 수행되기 때문에
서로 다른 타입의 피연산자가 있을 경우 두 피연산자 중 크기가 큰 타입으로 자동
변환된 후 연산을 수행한다.
예) int
타입 피연산자와 double
타입 피연산자를 덧셈 연산하면
int
타입 피연산자가 double
타입으로 자동 변환된다.double
이 된다!만약 꼭 int
타입으로 연산을 하고 싶다면 double
타입을 int
타입으로 강제 변환하고 덧셈 연산을 수행하면 된다.
public class OperationsPromotionExample {
byte byteValue1 = 10;
byte byteValue2 = 20;
int intValue1 = byteValue1 + byteValue2;
System.out.println(intValue1);
char charValue1 = 'A';
char charValue2 = 1;
int intValue2 = charValue1 + charValue2;
System.out.println("유니코드 = " + intValue2);
System.out.println("출력문자 = " + (char)intValue2);
int intValue3 = 10;
int intValue4 = intValue3/4;
System.out.println(intValue4);
int intValue5 = 10;
double doubleValue = intValue5 / 4.0;
System.out.println(doubleValue);
}
30
유니코드 = 66
출력문자 = B
2
2.5