JAVA

Promotion

lshjju 2025. 10. 20. 19:50

자바의 데이터 타입 변환 중에서 가장 안전하고 자연스러운 과정인 **프로모션(Promotion, 자동 타입 변환)**에 대해 알아보겠습니다.

이름에서 느껴지듯이, '승진'이나 '격상'처럼 작은 그릇에 담긴 데이터를 큰 그릇으로 옮기는 과정을 말합니다.



📘 자바 프로모션(Promotion): "작은 그릇에서 큰 그릇으로"

1. 프로모션이란?

  • 설명: 크기가 작은 타입이 크기가 큰 타입으로 저장될 때, 자바 컴파일러가 자동으로 형변환을 해주는 현상입니다.
  • 특징: 데이터 손실이 전혀 없기 때문에 개발자가 직접 변환하라고 명시하지 않아도 자바가 알아서 처리해 줍니다.
  • 비유: 종이컵에 든 물을 커다란 양동이에 붓는 것과 같습니다. 물이 넘칠 걱정이 없으니 안심하고 부어도 되는 것이죠.

📦 프로모션의 규칙과 예제

데이터 타입의 크기 순서는 다음과 같습니다.

byte(1) < short(2) < int(4) < long(8) < float(4) < double(8) > (참고: float은 4바이트지만 표현 범위가 long보다 크기 때문에 long에서 float으로도 자동 변환됩니다.)

1. 정수 타입 간의 프로모션

작은 정수 타입 변수를 큰 정수 타입 변수에 대입할 때 발생합니다.

Java
 
public class PromotionExample {
    public static void main(String[] args) {
        byte byteValue = 10;
        
        // byte(1) -> int(4)로 자동 변환
        int intValue = byteValue; 
        System.out.println("int로 변환된 값: " + intValue);
        
        long longValue = intValue; // int(4) -> long(8)로 자동 변환
        System.out.println("long으로 변환된 값: " + longValue);
    }
}

2. 정수와 실수 간의 프로모션

정수는 실수 타입으로 저장될 때 항상 자동으로 변환됩니다. 실수 타입은 소수점 이하를 표현할 수 있는 더 정밀한 그릇이기 때문입니다.

Java
 
public class IntToDoubleExample {
    public static void main(String[] args) {
        int intValue = 200;
        
        // int(4) -> double(8)로 자동 변환
        // 결과는 200.0이 됩니다.
        double doubleValue = intValue; 
        
        System.out.println("double로 변환된 값: " + doubleValue);
    }
}

3. 연산 중의 프로모션

자바에서 서로 다른 타입이 연산을 수행하면, 결과는 자동으로 더 큰 타입으로 변환됩니다.

Java
 
public class OperationPromotion {
    public static void main(String[] args) {
        int intVal = 10;
        double doubleVal = 5.5;
        
        // int + double 연산을 하면 int가 double로 먼저 자동 변환된 후 계산됩니다.
        // 결과 타입은 double이 됩니다.
        double result = intVal + doubleVal; 
        
        System.out.println("연산 결과: " + result); // 15.5
    }
}

👨‍🏫 쉽게 이해하는 핵심 포인트

  1. 컴파일러의 배려: 프로모션은 자바가 우리 대신 안전하게 처리해 주는 서비스입니다.
  2. 반대 방향은 안 돼요: 큰 그릇의 물을 작은 그릇에 부으면 넘칠 수 있겠죠? 이를 **캐스팅(Casting, 강제 형변환)**이라고 하며, 이때는 반드시 개발자가 직접 명령해야 합니다.
  3. char 타입: char는 0~65535의 범위를 가지므로, int 타입으로 자동 변환되면 해당 문자의 유니코드 번호가 저장됩니다.

오늘의 요약

  • Promotion은 작은 타입에서 큰 타입으로의 자동 변환이다.
  • 데이터 손실이 없으므로 자바가 스스로 처리하며 매우 안전하다.
  • 실수 타입은 정수 타입보다 항상 크다고 간주되어 정수에서 실수는 무조건 자동 변환된다.

자바의 데이터 흐름을 이해하는 가장 기본이 되는 프로모션에 대해 마스터하셨습니다!


'JAVA' 카테고리의 다른 글

JAVA Default code analysis  (0) 2026.02.04
Exception class  (0) 2025.11.05
Inheritance  (0) 2025.10.09
Exception handing  (0) 2025.10.08
JAVA Comments  (2) 2025.08.27