작은 범위를 가진 타입에서 큰 범위를 가진 타입에 값을 넣을 수 있습니다.
int -> long -> double
큰 범위에서 작은 범위는 다음과 같은 문제가 발생합니다.
1) 소수점 버림
2) 오버플로우 (오버플로우가 발생하지 않도록 하는것이 중요합니다.)
오버플로우 발생은 변수에 값을 대입할 때 변수에 지정한 타입의 허용범위보다 클 때 발생합니다. 오버플로우가 발생 했을때 상위 타입으로 변환을 함으로 해결합니다.
형변환 - 명시적 형변환
큰 범위의 타입을 가진 변수에서 작은 범위의 타입을 가진 변수에 대입은
명시적 형변환이 필요합니다.
... 큰 범위에서 작은 범위로 대입은 언제 하나요?
// 소수점만 버리고 정수만 보고 싶을때
// 대략적 결과만 보고싶을때 데이터 타입을 강제로 변경할 수 있습니다.
예시 ) double -> int
double doubleValue = 1.5;
int intValue = 0;
// intValue = doubleValue; 컴파일 오류발생
intValue = (int) doubleValue; // 형변환
System.out.println(intValue); // 1 출력
// + int 타입 변수에 double 타입 변수로 형변환을 한다고 하여서
// double 타입 변수안의 값이 변경되는 것은 아니다.
// 변수의 값은 대입연산자 = 를 사용해서 직접 대입할 때만 변경된다.
자바에서 계산
int k = 3 / 2;
int k = 1;
double j = 3 / 2;
double j = 1;
double j = 1 (double) 1;
double j = 1.0