더북(TheBook)

3.5.2 명시적 형변환과 묵시적 형변환

다음 코드를 봅시다. 정수형과 실수형 변수를 선언합니다. 두 변수로 덧셈 연산을 하고 그 결과를 정수형 변수에 담습니다. 어떤 결과가 나올까요?

public class Main {
    public static void main(String[] args) {
        int num1 = 12; 
        float num2 = 12.3F;
        int result = num1 + num2;
        System.out.println(result);
    }
}

코드를 실행하면 빌드 창이 열리며 ‘호환되지 않는 타입(incompatible types: possible lossy conversion from float to int)’이라는 오류 메시지가 나옵니다. 이는 ‘float형을 int형으로 변환하면 값이 손실될 수 있어서 변환이 불가능하다’는 뜻입니다.

코드에 나온 덧셈 연산하려면 float형인 num2 값을 int형으로 형변환해야 합니다. 그러면 범위가 큰 값이 더 작은 값으로 변환됩니다. 이때 값이 손실되므로 형변환을 할 수 없게 자바 컴파일러가 막는 것입니다. 다음과 같이 변환할 자료형을 명시해서 형변환하면 문제없이 실행됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.