관심있는 주제/Java

형 변환 (type conversion)

Lynn123 2018. 11. 8. 16:34
반응형

   형 변환은 어떤 데이터 타입을 변환한다는 뜻이다. 예를 들어, 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; 해준 것 처럼 직접 변환을 해주면 된다. 



반응형

'관심있는 주제 > Java' 카테고리의 다른 글

불린(Boolean)  (0) 2018.11.09
연산자  (0) 2018.11.08
데이터 타입  (0) 2018.11.08
주석 & 세미콜론  (0) 2018.11.06
변수  (0) 2018.11.06