변수 형변환을 할 때, 표현 범위가 작은 타입에서 큰 타입으로의 변환은 형변환 표기를 안해도 자바에서 자동으로 형변환 처리를 해주기 때문에 문제가 없다.
int value = 10;
long longValue = value;
double doubleValue = longValue;
대입하는 과정에서 형변환을 하여 타입을 맞춰줘야하기 때문에 실제로는 아래와 같이 동작한다.(자동 형변환, 묵시적 형변환)
int value = 10;
long longValue = (long) value;
double doubleValue = (double) longValue;
표현 범위가 큰 타입에서 작은 타입으로의 변환은 문제가 발생하게 됨.
-> 소수점 버림, 오버플로우
자바에서 숫자를 표현할 수 있는 범위는 아래와 같음
int < long < double
표현 범위가 큰 타입에서 작은 타입으로의 변환은 형변환을 꼭 표기 해줘야 함(명시적 형변환, casting)
double doubleValue = 10.0;
long longValue = (long) doubleValue;
int value = (int) longValue;
double에서 int로 형변환을 할 때에는 값을 정수로만 표현해야 하기 때문에 소수점이하의 값을 버려야 한다.