drexqq

[Java, 자바] 캐스팅(Casting) 본문

Back-End/Java

[Java, 자바] 캐스팅(Casting)

drexqq 2020. 5. 20. 20:27
728x90
반응형

Java의 캐스팅(Casting) 형 변환에 대해서 알아보자.

간단히 말하자면 형 변환은 프로그래밍에서 자료형을 다른 형태로 변경하는 것이다.

 

이게 무슨 말인고 하니 자바의 기본 자료형에는 총 8가지가 있다.

 

boolean - 1 byte
byte -  1 byte
short -  2 byte
int -  4 byte
long -  8 byte
float -  4 byte
double - 8 byte


위와 같이 8개의 자료형들 중 boolean을 제외한 7개의 기본형들은 서로 형 변환이 가능하다.

하지만 기본형과 참조형 간에는 서로 형변환이 되지 않는다.

 

여기서 참조형은 기본자료형을 제외한 모든 자료형을 뜻한다. (ex : String, array 등등..)


또한 서로 다른 타입의 변수간의 연산에는 형 변환이 요구되지만, 값의 범위가 적은 타입에서 큰 타입으로의 변환은 생략할 수 있다.

 

쉽게 말해서 용량이 큰 변수에서 작은 변수로 갈때는 형 변환이 요구되지만 용량이 적은 변수에서 큰 변수로 갈 때는 변환을 생략할 수 있다는 말이다.

 

하나만 해보자

class CastingEx2 
{ 
      public static void main(String[] args) 
      { 
            int num = 128; 
            byte by = (byte)num; 
            System.out.println("num=" + num);
            System.out.println("by=" + by); 
      } 
} 

위 코드에서 출력되는 값이 무엇일까?

답은 num=128, by=-128 가 나오게 된다.

그 이유는 위에 말했듯이 작은용량 -> 큰 용량 형 변환이 필요하지 않지만 큰 용량 -> 작은 용량은 형 변환이 필요하기 때문이다.

 

표현할 수 있는 범위가 1 byte는 -128 ~ 127, int가 -2의 32승 ~ 2의 32승-1이다

따라서 int값을 byte값으로 변환하게 되면 기존의 int값이 그대로 보존되지 않고 값 손실이 일어날 수 있다.

728x90
반응형
Comments