Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java 기본 타입 확대 변환(Widening Primitive Conversion) 완벽 이해

Java에서 확대 변환(Widening Primitive Conversion)은 작은 크기의 기본 타입이 더 큰 크기의 타입으로 자동 변환되는 과정을 말합니다. 예를 들어 byteshortintlongfloatdouble 순서로 데이터 손실 없이 변환이 이루어집니다.

아래는 확대 기본 변환의 동작을 보여주는 대표적인 예제입니다.

예제 코드

public class Demo {
    public static void main(String[] args) {
        System.out.print("H" + "E");
        System.out.print('L');
        System.out.print('L');
        System.out.print('O');
    }
}

실행 결과

HELLO

코드 분석

위 코드에는 Demo라는 이름의 클래스가 있으며, 그 안에 main 메서드가 정의되어 있습니다. 먼저 큰따옴표(" ")로 묶인 문자열 두 개를 '+' 연산자로 연결하여 출력하고, 이후 작은따옴표(' ')로 묶인 문자들을 하나씩 출력합니다.

여기서 중요한 점은 확대 기본 변환이 발생하려면 반드시 '+' 연산자가 필요하다는 것입니다. '+' 연산자는 좌변과 우변 모두에서 정수 타입을 기대하기 때문에, char 타입의 문자 'L', 'O'는 각각 해당하는 유니코드 정수 값으로 확대 변환됩니다.

즉, 첫 번째 print 문에서는 문자열 연결(String concatenation)이 일어나 "HE"가 되고, 이후 char 값들은 정수로 승격된 후 다시 문자로 해석되어 최종적으로 "HELLO"라는 결과가 출력됩니다.

정리

  • 확대 변환은 작은 타입에서 큰 타입으로 자동으로 이루어지며 데이터 손실이 없습니다.
  • char, byte, short 등은 산술 연산 시 int로 승격됩니다.
  • '+' 연산자 사용 여부에 따라 문자열 연결인지, 수치 연산(확대 변환)인지 동작이 달라집니다.