[JAVA] 3. 변수의 캐스팅 (형 변환)

문정준's avatar
Feb 03, 2025
[JAVA] 3. 변수의 캐스팅 (형 변환)
💡
한 데이터 타입을 다른 데이터 타입으로 변환 (Type Casting)
 

1. 묵시적 형 변환 (Upcasting)

묵시적 형 변환은 업캐스팅(Upcasting)이라고 하며, 크기가 작은 변수형을 크기가 큰 변수형으로 변환하는 것을 말합니다.
notion image
n2가 실수로 선언이 되어있고 n1이 정수로 선언이 되어 있을 때, n1을 n2에 저장하는 것은 큰 문제가 되지 않을 것입니다. n1은 4바이트이고, n2는 8바이트로 선언이 되어있기 때문입니다.
작은 박스를 큰 박스 안에 담는 것이 문제가 되지 않듯, 크기가 작은 변수를 크기가 큰 변수형에 저장하는 것 또한 문제가 되지 않기에, 이를 암묵적으로 허용합니다.
package ex01; public class Var02 { public static void main(String[] args) { // 1. 묵시적 형 변환 (암묵적) - 업캐스팅 int n1 = 10; double n2 = 10.5; n2 = n1; System.out.println(n2); } }
 
notion image
 
 

2. 명시적 형 변환 (Downcasting)

명시적 형 변환은 다운캐스팅(Downcasting)이라고 하며, 변수의 유형을 강제로 변환해야 할 때 사용합니다.
notion image
int를 double 저장 공간 안에 넣는 것은 가능했지만, double을 int의 저장 공간 안에 저장할 수는 없습니다. 저장 공간이 double이 더 크기 때문에 데이터 형 변환이 불가능하다는 오류를 출력합니다.
아래의 코드를 실행하면, 오류 메시지와 함께 실행이 중단되는 것을 확인할 수 있습니다.
package ex01; public class Var02 { public static void main(String[] args) { // 2. 명시적 형 변환 (강제로) - 다운캐스팅 int n3 = 5; double n4 = 5.5; n3 = n4; System.out.println(n3); } }
  • 오류 발생 : Java: 호환되지 않는 유형: double에서 int로의 손실 변환 가능성
notion image
 
이 때문에 명시적 형 변환을 진행할 때에는,
💡
명시적 형 변환
n3 = (int) n4;
이와 같이 소괄호와 함께 변환할 자료형을 함께 표시해야 합니다. 이때, 저장 크기가 큰 데이터를 다른 자료형으로 강제 변환할 경우, 데이터의 손실이 발생합니다.
아래의 예제에서 double인 n4를 int로 변환하면 소수점이 없어지고 5만 남는 것을 볼 수 있습니다.
package ex01; public class Var02 { public static void main(String[] args) { // 2. 명시적 형 변환 (강제로) - 다운캐스팅 int n3 = 5; double n4 = 5.5; n3 = (int) n4; System.out.println(n3); } }
  • 결과
notion image
Share article

sxias