3.5.2 명시적 형변환과 묵시적 형변환
다음 코드를 봅시다. 정수형과 실수형 변수를 선언합니다. 두 변수로 덧셈 연산을 하고 그 결과를 정수형 변수에 담습니다. 어떤 결과가 나올까요?
main(String[] args) {
Main {
12;
num2 = 12.3F;
result = num1 + num2;
System.out.println(result);
num1 = }
}
코드를 실행하면 빌드 창이 열리며 ‘호환되지 않는 타입(incompatible types: possible lossy conversion from float to int)’이라는 오류 메시지가 나옵니다. 이는 ‘float형을 int형으로 변환하면 값이 손실될 수 있어서 변환이 불가능하다’는 뜻입니다.
코드에 나온 덧셈 연산하려면 float형인 num2 값을 int형으로 형변환해야 합니다. 그러면 범위가 큰 값이 더 작은 값으로 변환됩니다. 이때 값이 손실되므로 형변환을 할 수 없게 자바 컴파일러가 막는 것입니다. 다음과 같이 변환할 자료형을 명시해서 형변환하면 문제없이 실행됩니다.