프로그래밍/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) 필요

형변환 시 데이터 손실 가능성을 꼭 고려할 것!