프로그래밍/JAVA
7. 자바의 강제 타입 변환 완전 이해하기!
설매향
2025. 4. 15. 15:06
반응형
프로그래밍에서는 값의 자료형을 바꾸는 것이 아주 중요합니다.
특히 큰 자료형을 작은 자료형으로 바꿀 때는 명시적인 형변환이 필요합니다.
이번 글에서는 자바의 강제 타입 변환을 예제로 알아보겠습니다.
💻 예제 코드
public class CastingExample {
public static void main(String[] args) {
int x1 = 10;
byte x2 = (byte) x1;
System.out.println(x2);
long x3 = 300;
x1 = (int) x3;
System.out.println(x1);
int x4 = 65;
char x5 = (char) x4;
System.out.println(x5);
double x6 = 3.14;
int x7 = (int) x6;
System.out.println(x7);
}
}
💬 코드 설명
1. int ▶ byte 형변환
int x1 = 10;
byte x2 = (byte) x1;
int는 4바이트이며, byte는 1바이트이다.
작은 자료형으로 바꾸는 건 자동 변환이 안 되서 (byte) 처럼 명시적 형변환이 필요하다.
값이 byte 의 범위(-128~127)를 벗어날 경우 데이터 손실 발생 가능성이 있다.
2. long ▶ int 형변환
long x3 = 300;
x1 = (int) x3;
long은 8바이트, int는 4바이트이다.
큰 정수형을 작은 정수형으로 변환할 때도 형변환이 필요하다.
3. int ▶ char 형변환
int x4 = 65;
char x5 = (char) x4;
문자형 char 은 유니코드 정수로 저장됩니다.
숫자 65 ▶ 문자 'A' 로 변환합니다. (ASCII 코드)
숫자를 문자로 바꿀 때 유용합니다.
4. double ▶ int 형변환
double x6 = 3.14;
int x7 = (int) x6;
1. 실수 ▶ 정수로 변환 시 소수점 이하를 버립니다.
결과는 3.14에서 .14를 없애고 3만 출력합니다.
📃 실행 결과
10
300
A
3
📌 간단 정리
변환 방향 | 형변환 필요? | 결과 |
int → byte | ✅ 필요 | 값이 작으면 그대로, 크면 손실 가능 |
long → int | ✅ 필요 | 값 유지되지만 주의 필요 |
int → char | ✅ 필요 | 유니코드 문자 변환 |
double → int | ✅ 필요 | 소수점 버림 처리됨 |
📌 명시적 형변환(강제 타입 변환)이란?
큰 자료형 ▶ 작은 자료형으로 변환할 때 사용하는 방식
(자료형) 을 붙여서 명시적으로 바꿔줘야 한다.
💡 포인트 정리
1. 작은 타입 ▶ 큰 타입 : 자동 형변환 (Promotion)
2. 큰 타입 ▶ 작은 타입 : 명시적 형변환 (Casting) 필요
형변환 시 데이터 손실 가능성을 꼭 고려할 것!