[Java] 형 변환
1. 자동 형 변환
int형 정수와 double형 실수를 더하고 싶다면 형을 변환시켜야 한다.
자료형이 다른 두 값을 대상으로는 덧셈을 수행할 수 없기 때문이다.
위에서 자료형이 다름에도 연산이 정상적으로 된 이유는 num1에 저장된 값을 long으로 변환하여 메모리에 임시 저장 후 num2와의 연산을 수행하는 '자동 형 변환'이 일어나기 때문이다.
이에는 규칙이 있다.
1) 자료형의 크기가 큰 방향으로 형 변환이 일어난다.
2) 자료형의 크기에 관계없이 정수 자료형보다 실수 자료형이 우선한다.
> 정수형을 실수형으로 변환하면 오차는 존재하겠지만 데이터 손실은 일어나지 않음
byte > short > int > long > float > double
문자 자료형은 int로 변환되어 위에 끼어 들어갈 수 있다.
2. 명시적 형 변환
자동 형 변환이 진행되지 않는 상황에서도 필요하다면 이를 통해 형 변환을 할 수 있다.
다만, 데이터의 크기가 큰 것을 작은 크기로 변환할 때에는 상위 byte가 잘려나가고, 알 수 없는 값으로 변환되므로 주의를 요한다.
명시적 형 변환이 필요한 경우는 다음 예와 같은 상황이다.
컴퓨터는 덧셈을 위해 num1과 num2에 저장된 값을 int로 변환 후 계산한다.
그리고 그 값을 num3에 저장하려고 했는데, num3은 short고 결과값은 int이기에 오류가 발생하는 것이다.
이 때 다음과 같은 명시적 형 변환을 통해 오류를 해결할 수 있다.