자바 형변환 Promotion Casting
java 형변환 Promotion Casting 지난 글에서 자바의 자료형에 대해서 기본 정리를 해봤었는데요. 이번 글에서는 그것들의 형변환에 대해서 알아보도록 할겠습니다. 데이터들은 상황에 따라서 서로 같은 자료형으로 맞춰줘야 할 때가 있고 자동으로 변하는 경우가 있습니다. 어떤 상황이든 작은 데이터를 큰 곳으로 옮겨가는 과정을 Promotion이라고 하고 반대로 큰 데이터를 작은 곳으로 구겨 넣는 것을 Casting이라고 합니다. 작은 걸 큰 그룻에 담을 때는 당연히 손실되는 게 없겠죠? 반대로 큰 것을 작은 그릇에 담을 때는 모두 담지 못하고 일부는 버려지게 됩니다. 이 개념을 잡고 접근하면 자바 형변환은 어렵지 않더라구요.
일단 이해를 쉽게 하기 위해서 다음과 같은 대입 연산이 있다고 가정해볼게요.
public class Test { public static void main(String[]ar){ byte a=100; int b=a; System.out.println("b의 값은:"+b); } }
a는 2byte의 정수이고 b는 4byte입니다. 그렇기 때문에 a를 b에 대입해서 전혀 문제가 없고 손실되는 값이 없습니다. 이런 걸 Promotion이라고 하구요. 반대의 경우를 보겠습니다.
public class Test { public static void main(String[]ar){ int x=100; byte y=x; System.out.println("y의 값은:"+y); } }
이 경우는 컴파일 에러가 발생합니다. 4byte 크기의 x를 2byte의 y 안에 구겨 넣는 과정에서 데이터가 손실될 수 있는데 그 내용을 명시하지 않았기 때문입니다. 즉, 손실이 있더라도 작은 공간에 넣는 것은 가능합니다. 하지만 시스템에게 이 상황을 알려줘야 하는 것입니다. 그렇기 때문에 다음과 같이 작은 자료형으로 넣는다는 의미로 넣으려는 값 앞에 (작은 자료형=byte)를 입력해줘야 합니다.
public class Test { public static void main(String[]ar){ int x=100; byte y=(byte)x; System.out.println("y의 값은:"+y); } }
예제처럼 대입하려는 값 앞에 (자료형)을 입력해주면 됩니다. 이것을 가리켜 캐스팅(Casting)이라고 하는데 단어의 뜻을 보면 '주물'이거든요. 작게 만들어진 주물 안에 큰 물건을 넣을 때 모두 담지 못할 수도 있다는 것을 의미한다고 생각하면 쉽게 이해가 될 것입니다. 즉, 손실을 감안하고라도 작은 곳으로 넣겠다는 의미이고 그 내용을 시스템에게 알려주고 있는 상황입니다.
이렇게 해서 자바 형변환 Promotion과 Casting에 대해서 기본 개념을 정리해봤습니다. 수고하셨어요.