Java

[Java] 형 변환 Casting의 프로모션과 디모션에 대해 알아보기

joheamin 2025. 3. 18. 12:31

자바에는 여러 타입들이 있으며 각각의 타입에는 저장가능한 범위가 정해져있다.

 

❓Casting 이란 

 타입들간에 형 변환을 의미하며, 작은 타입에서 큰 타입으로 변하거나 반대로 큰 타입에서 작은 타입으로 변하는지에 따라 자동으로 변하거나 명시적으로 변환해주거나가 달라지게된다.

 

🔷 자바의 타입들

1바이트 : byte / char

2바이트 : short

4바이트 : int / float

8바이트 : double / long

 

 

🔴 프로모션

작은 타입을 큰 타입으로 변환하는 것을 프로모션이라고 한다.

 

프로모션은 작은 타입에서 큰 타입으로 변한다는 조건아래 

자동으로 형 변환이 이루어진다.

 

🔍 예시

short num = 10;
System.out.printf("%d",10);

 

👉  short  > int 로 자동으로 형변환 된다.

 

 

 

🔴 디모션

큰 타입에서 작은 타입으로 변환하는 것을 디모션이라고 한다.

 

작은 타입에서 큰 타입으로 변하는 것은 자동으로 변환되며 에러가 발생하지 않지만

큰 타입에서 작은 타입으로 변환할 경우 자동으로 변환되지 않기 때문에 에러가 발생

 

따라서 명시적으로 변환해주어야한다.

 

명시적 없이 변환
double num = 10;
System.out.printf("%d",10);

👉 IllegalFormatConversionException 에러 발생 : num은 d로 변환 불가능


명시적 변환

double num = 10;
System.out.printf("%d",(int)10);

👉 에러 없이 출력

 

 

✔️ 형 변환을 할 때에는 프로모션과 디모션을 잘 생각하여 변환해주도록 한다.