형 변환은 어떤 데이터 타입을 변환한다는 뜻이다. 예를 들어, int라는 데이터 타입을 double이나 float으로 바꾸고 싶을 때 형 변환을 한다.
우선 int = 200 (=2^7 + 2^6 + 2^3) 이라고 가정했을 때 , 이 숫자의 비트값은
00000000 00000000 00000000 11001000 (2진법으로 표현한다.) 으로 나타난다.
이유는 int가 32비트니까 그만큼의 공간을 할당을 받고, 거기서 200만큼의 수가 1을 갖는 것이라고 나는 이해했다.
그럼 실수 200.0을 컴퓨터에 저장한다면 , 실수 200.0은
01000011 01001000 00000000 00000000 으로 나타난다. 여기서 볼 수 있듯 200과 200.0은 비트값 내용이 매우 다르다는걸 알 수 있다. 따라서 컴퓨터는 둘을 다르다고 받아들이는 것이다.
그래서 형 변환이 필요하다.
1. 자동 형 변환
먼저 자동 형 변환에 대해 살펴보면,
2.2는 double이기 때문에 double 변수에 값을 할당했을 때 아무 에러가 뜨지 않는다. 그렇다면 2.2 를 F를 붙여서 float type으로 만들어 보았다. 데이터 타입에서 봤던 내용이라면 에러가 떠야 하지만 에러가 뜨지 않았다. 그 이유는 double이 float보다 크기가 크기 때문에, 자바 내에서 2.2F 라는 float 형을 double형으로 자동으로 변환을 시켜준다. 아마 이런 것을 widening 이라고 배웠던 것 같다.
즉 크기가 큰 타입에 크기가 작은 타입을 매치시키면 자동으로 형 변환을 해준다.
<형 변환이 가능한 관계>
( char - > int 는 가능하지만 int -> char 는 불가능하다.)
2. 명시적 형 변환(explicit conversion)
그렇다면 크기가 작은 타입에 크기가 더 큰 타입을 매치를 시키는 경우 어떻게 형 변환을 할 수 있을까? 위 예시에서 float b = 1.0F; 해준 것 처럼 직접 변환을 해주면 된다.