이번에는 반대 경우를 한번 살펴볼까요? long형에 x2라는 변수를 선언하고, 5라는 값을 넣습니다. 다음으로 int형 변수 y2를 선언하고, y2에 x2의 값을 넣어보겠습니다.
public class TypeCastingExam { public static void main(String[] args) { int x = 50000; long y = x; long x2 = 5; int y2 = x2; System.out.println(y2); } }
실행결과
Exception in thread "main" java.lang.Error: Unresolved compilation problem: Type mismatch: cannot convert from long to int at TypeCastingExam.main(TypeCastingExam.java:9)
이번에는 컴파일러가 형변환 에러를 발생시킵니다. long형의 값을 int형에 담을 때는 문제가 발생할 수도 있기 때문입니다. 실제로 변수 x2에는 5라는 작은 값이 들어있고 int형 변수 y2는 5라는 값을 충분히 담을 수 있지만, 컴파일러는 이러한 내용을 모르기 때문에 결정을 내릴 수 없습니다. 따라서 프로그래머가 형변환해줘야 합니다. 프로그래머가 “이 값을 int형에 담아도 좋습니다.”라고 알려주면 문제없이 형변환할 수 있죠.