[Java 입문] 13. 형변환

1. 작은 범위에서 큰 범위로의 대입 (묵시적 형변환)

 

int->long->double

 

int형을 double형으로 변환시키고 싶다면?

 

//intValue = 1

doubleValue = intValue

doubleValue = (double) intValue  (형변환)

doubleValue = 1.0

 

근데 작은 범위에서 큰 범위 타입으로의 대입은 굳이 직접 형 변환을 하지 않아도 자바에서 자동으로 형변환을 해준다.

이를 묵시적 형변환이라고 한다.

 

 

2. 큰 범위에서 작은 범위로의 대입 (명시적 형변환 Casting)

 

1) 소수점 버림

double형인 1.5를 int형 변수에 명시적 형변환하여 대입하면 소수점 0.5는 삭제되고 1이 출력된다.

1 출력

 

2) 오버플로우

 

int형의 최고값인 2147483647보다 1 큰 값을 int에 대입하였더니

시계가 한 바퀴 돈 것처럼 int의 가장 작은 숫자인 -2147483648로 바뀐다.

이러한 문제는 당연하게도 절대 발생하면 안 된다.

해결방법은 앞에서 보았던 것처럼 intVlaue을 long 타입으로 크기를 늘려주면 문제를 간단히 해결할 수 있다.

 

 

3. 계산할때의 형변환

 

1) 같은 타입끼리의 계산은 같은 결과를 낸다.

 

int+int -> int

double+double -> double

 

2) 서로 다른 타입의 계산은 큰 범위로 자동 형변환이 발생한다.

 

즉, int+long -> long+long

int+double -> double+double

 

계산 형변환을 나타내는 예시 코드