변환 연산

변환 연산

이 문서에서는 변환(cast) 연산에 대해서 살펴본다.

변환 연산이란

변환 연산이란 변환이 가능한 형태일 경우 해당 형태로 바꾸는 연산을 말한다. 여기서 주의할 점은 변환이 가능한 형태여야 한다는 것이다. 즉, 같은 분류일 경우에만 변환이 가능하다.

변환 연산 데모 1

import java.lang.*;

public class CastOperatorExample1 {
    public static void main(String[] args){
        
        double a = 12.345;
        
        //int b = a;//오류 발생
        int b = (int)a;
        
        System.out.println("a = " + a);
        System.out.println("b = " + b);
    }
}

실행 결과는 다음과 같다.

a = 12.345
b = 12

doubleint는 같은 숫자 형태이므로 서로 변환이 가능하다. 단, double에서 int로 변환할 경우 double에 있는 소수점 아래 부분의 값이 사라지기 때문에 자바에서는 대입 연산을 허락하지 않는다. 따라서 (int)를 붙여 먼저 변환한 뒤 대입을 하는 형태로 코드를 작성해야 정상적으로 변환이 이루어진다.

이를 강제 형변환 또는 명시적 형변환이라고 한다.

변환 연산 데모 2

import java.lang.*;

public class CastOperatorExample2 {
    public static void main(String[] args){
        int a = 10;
        
        double b = (double)a;//(double) 생략 가능
        
        System.out.println("a = " + a);
        System.out.println("b = " + b);
    }
}

실행 결과는 다음과 같다.

a = 10
b = 10.0

intdouble로 변환하는 예제이며, 둘 다 숫자이므로 변환에 무리가 없다. doubleint보다 더 많은 값을 표현할 수 있는 큰 자료형이기 때문에 (double)연산자를 생략해도 코드상 문제가 되지 않는다. 즉, 다음 두 코드는 같은 뜻이다.

double b = (double)a;

double b = a;//자동 형변환(묵시적 형변환)

이 때 (double)을 생략해도 자바가 알아서 처리해주기 때문에 이를 자동 형변환 또는 묵시적 형변환이라고 한다.

사용자 정의 자료형간의 변환

이 문서에서는 다루지 않지만 직접 만든 자료형들도 특정 조건을 만족하면 변환이 가능하다. 클래스와 상속 문서에서 다룬다.

Last updated