<aside> 💡
자료형을 사용하면서 때로는 데이터를 다른 그릇(변수)에 담아야 할 때가 있다.
이럴 경우 컴파일러에게 알려줘야 하고, 이를 형변환(Type Casting)이라고 한다.
형변환에는 자동으로 변환되는 묵시적 형변환과 강제로 형변환 시켜줘야 하는 명시적 형변환이 있다.
일반적으로 묵시적 형변환은 컴파일러가 알아서 처리해주어 문제는 발생하지 않지만 명시적 형변환은 개발자가 직접해야 하기 때문에 주의를 기울여야 한다.
형변환은 참조형에서도 자주 쓰이는 기법이다.
</aside>

값의 범위가 허용 범위 내에 있으면 묵시적 형변환이 가능하다.(컴파일의 특정 여부)
일반적으로 더 큰 자료형으로 변환하는 경우에 적용되며, 정보의 손실은 없는 경우이다.
다만 여기서 중요한 것은 메모리 공간 크기를 기준으로 변환하지 않고 값의 표현 범위를 기준으로 변환여부를 결정한다.
위의 그림 처럼 byte→char 로 변환 되지 않는 이상 모두 가능하다.
기본적으로 컴퓨터는 4바이트 연산을 기본으로 하기 때문에 char형도 int 형으로 인식한다.
정수 간 산술연산은 int형으로 암시적 형변환 한다.
정수→ 실수로 변환 되는 것도 가능하다. 다만, 값의 정확성은 보장하지 못한다.
package com.java.datatype02.casting;
public class Casting01 {
public static void main(String[] args) {
// 형변환(TypeCasting) : 숫자의 길이가 중요하다
// 묵시적 형변환 : 자동
// 명시적 형변환 : 수동
// 묵시적 형변환 : 컴파일러가 숫자의 크기를 고려하여 자동으로 형을 변환 시켜준다.
// 더 큰 숫자의 형에 대입할 때 작은 숫자의 범위에 형을 자동으로 변환 시켜준다.
// float num1 = 0.0; : error
float num1 = 5; // 자동형변환 5(int) -> 5.0F(float)형변환
double num2 = 0.5F;
System.out.println(num1);
System.out.println(num2);
byte num3 = 100; //int(기본값) -> byte로 묵시적형변환
short num4 = 45; // int(기본값) -> short로 묵시적형변환
}
}
연산에서는 일반적으로 값의 범위(메모리 크기 아님)로 형변환 이루어진다
큰쪽으로 연산이 변환 된다.