[JAVA] 6. 형변환(Casting)

2014. 12. 24. 15:09프로그래밍/JAVA

    목차

형변환(Type Casting)

 

- 형변환이란 변수가 저장하고 있는 값이나 리터럴을 원하는 자료형으로 변환하는 작업이다.


변수의 자료형을 바꾸는 형변환은 없다. 또한 기본형 데이터타입의 boolean은 형변환 대상이 아니다.

형변환에는 JVM에 의한 자동 형변환과 프로그래머가 필요해서 하는 명시적 형변환이 있다.

 

여기서는 기본형 데이터탑의 대해서만 설명하도록 하겠다.

 

 

◇ 자동 형변환(Up-Casting)

 

 long lo = 300;

 

- 자동형 변환은 데이터타입의 표현범위가 작은쪽으로 많은쪽으로 변환이 될때만 가능하다.

 

◇ 자동 형변환이 이루지는 방향

 byte   ☞   short   ☞   int   ☞   long   ☞   float   ☞   double

               char  

 

 

◇ 명시적 형변환(Down-Casting)

 

 float f = 1.1; // 컴파일 에러!

 


- 변수에 값을 대입할 때 값의 자료형이 변수의 자료형보다 크면 컴파일 에러가 발생한다.

- 위 코드는 float형 변수에 double형의 값을 대입하려고 했기 때문에 컴파일 에러가 발생한 것이다.

 

- 명시적 형변환시 주의해야할 사항은 데이터표현 범위가 큰쪽에서 작은쪽으로 변환이 이루어지기에

 

데이터의 손실이 발생할 수 있다.

 

 int num = 300;

 byte b = (byte) num;

 ※ 결과

 num = 300;

 b = 44;

 

- 위에 코드와 같이 int 타입의 num 변수에 300이라는 값으로 초기화 후 byte 타입 b 변수에 num이 가지고 있던 값으로

 

초기화 할 경우 우리는 명시적인 형변환을 해주어야 한다. 이때 우리가 초기화 하려고 하는 b 라는 변수의 최대 저장 가능한

 

값 +127이라는 값을 넘어선다는 것을 알수 있을 것이다. 이렇게 저장 가능한 범위를 넘어서게 되면 표현범위가 작은

 

데이터타입의 bit 수 만큼만 넘겨 받고 받지 못하는 부분의 값을 버려지게 된다.

 

int num = 300;

1

1

 0

 

byte b = (byte) num;

 0

 

- 두개의 변수를 bit 로 표현한 모습이다. 위에서 보면 int 은 4바이트 이기에 총 32개 bit를 가지고 표현을 하고 byte 는

 

1바이트 이기에 8개 bit를 가지고 데이터를 저장하게 된다. int형에서 byte형으로 형변환을 할 경우에 byte 데이터타입이

 

받을 수 있는 8개의 bit만을 받게 되고(뒤쪽 bit 기준으로), 나머지 24개 bit는 사라지게 된다.

 

 

'프로그래밍 > JAVA' 카테고리의 다른 글

[JAVA] 8. 연산자  (0) 2015.04.21
[JAVA] 7. 배열  (0) 2015.01.07
[JAVA] 5. 데이터타입이란?  (0) 2014.12.23
[JAVA] 4. 정수의 오버플로우  (0) 2014.12.23
[JAVA] 3. 기본형 데이터타입의 저장 가능 범위  (390) 2014.12.19