지난 게시물에 이어 Java 데이터 관련 헷갈릴 수 있는 부분을 정리해보자.
(예제와 설명은 유튜브 생활코딩의 Java 입문강의를 참조하여 정리하였다.)
double a = 3.0F;
위의 코드는 double 타입의 변수 a에 float타입의 값을 대입하고 있다 이때 3.0F의 값은 자동으로 doulbe타입으로 형 변환이 일어난다.
이것이 가능한 이유는 double 타입이 float타입보다 더 많은 수를 표현할 수 있기 때문이다.
(double > float)
타입을 변경해도 정보의 손실이 일어나지 않을때, 자동 형 변환이 일어난다.
float a = 3.0;
반대로 위의 예제는 오류가 발생한다. 상수 3.0은 상수이지만 double형이다. 이 값을 표현범위가 적은 float에 넣으려고 하기 때문에 오류가 발생하였다.
※자동형변환의 원칙 : 표현범위가 좁은 데이터 타입에서 넓은 데이터 나입으로의 변환만 허용된다.

위의 이미지는 자동 형 변환이 일어나는 규칙을 보여준다.
byte타입은 short가 될 수 있지만 short는 byte 타입이 될 수 없다.
long은 float가 될 수 있지만 float은 long이 될 수 없다.
2. 명시적 형 변환
자동 형 변환이 적용되지 않는 경우 수동으로 형 변환을 해야 한다.
이를 명시적 형 변환이라고 한다.
아래의 코드는 오류가 발생하는데. 자동 형 변환이 이루어지지 않기 때문이다.
float a = 100.0;
int b = 100.0F;
위의 코드를 직접 수정하여 오류를 고쳐보면 아래와 같다.
float a = (float)100.0;
int b = (int)100.0F;