자동 타입 변환
변환아래 두 경우에는 자동으로 변환된다.
- 타입이 자동으로 변환바이트 크기가 작은 타입에서 큰 타입으로 변환할 때 (예 : byte → int)
- 덜 정밀한 타입에서 더 정밀한 타입으로 변환할 때 (예 : 정수 → 실수)
즉, 작은 범위에서 (작은 범위를 포함한) 큰 범위로 변환 가능하나 큰 범위에서 박은 범위의 변환은 불가하다.
아래 순서도의 화살표는 화살표를 기준으로 좌측의 타입이 우측의 타입으로 자동으로 변환될 수 있음을 의미한다.
byte(1) -> short(2)/char(2) -> int(4) -> long(8) -> float(4) -> double(8)
반대로는 불가하다. 표현범위가 더 좁기 때문이다.단, 캐스팅 연산자 ()를 사용하며, 캐스팅 연산자의 괄호 안에 변환하고자 하는 타입을 적어주면 가능하다.
수동 타입 변환
위에서 말했듯, 차지하는 메모리 용량이 더 큰 타입에서 작은 타입으로는 자동으로 타입이 변환되지 않는다.
이때 더 큰 데이터 타입을 작은 데이터 타입의 변수에 저장하기 위해서는 수동으로 타입을 변환해 주어야만 한다.
이를 캐스팅(casting)이라고 한다.
수동으로 타입을 변환할 때는 캐스팅 연산자 ()를 사용하며, 캐스팅 연산자의 괄호 안에 변환하고자 하는 타입을 적어주면 된다.
//int 타입으로 선언된 변수 intValue를 더 작은 단위인 byte로 변환합니다.
int intValue = 128;
byte byteValue = (byte)intValue;
System.out.println(byteValue); // -128