brunch
매거진 JAVA 그림책

형변환

명시적 형변환? 묵시적 형변환?

* 이 내용은 철저히 초심자를 위해 알기 쉽게 설명하는 것을 목적으로 하고 있습니다.

* 더 정확하고 자세한 개념은 다른 고수님들의 글들을 참고하시길 바랍니다.

* 그리고 이 글에서는 코드를 다루고 있지 않습니다.



변수는 물이나 음료를 담는 컵과 같다고 했고, 그 용도에 따라서 크기와 모양도 다르다고 했습니다.


렇게 서로 크기와 모양이 다른 변수들끼리 내용을 옮겨 담을 수 있습니다.


그것을 형 변환이라고 하는데, 그게 무엇인지 짧게 알아보도록 하겠습니다.



일전에 했던 이야기를 다시 한번 해 보겠습니다.

우리는 용도에 맞는 크기와 모양을 갖는 컵을 사용한다고 했습니다.


생맥주를 마실 땐 맥주잔을, 소주를 마실 땐 소주잔을 말이죠. 하지만 때로는 그렇지 않을 경우도 있습니다.


소주만 마시려고 했는데 소맥을 먹기 위해 맥주잔으로 바꾸는 경우도 있고, 맥주를 마시려고 했는데, 양을 조절해야 할 것 같아 소주잔에 마실수도 있겠죠?


이처럼 처음 생각했던 것과 달리 준비한 컵에 비해 향 후 양이 많아질 수도 적어질 수도 있습니다.



그래서 우리는 이것을 미리 대비하기 위해 잔을 변경합니다.

이것을 자바 프로그래밍에서는 형 변환이라고 합니다.

다만 안에 내용물이 있을 수도 있으니 조심해야겠죠?


문제는 안에 내용물이 있을 수도 있다는 것이죠!

그래서 우리는 잔을 옮길 때 기존의 내용물이 있다면 넘칠 수도 있다는 점을 생각해야 합니다.


우선 작은 잔을 큰 잔으로 옮길 땐 크게 조심할 필요가 없습니다. 작은 컵이 아무리 많아 담아봤어야 큰 컵 보다 많이 담을 순 없으니까요.


이렇게 작은 컵에서 큰 컵으로 옮겨 담을 때는 크게 신경 쓸 일이 없어서 묵시적 형변환이라고 부릅니다.


묵시적이라는 것은 ‘말하지 않아도 알지?’ 뭐 이런 뜻이라고 생각하면 됩니다.


반대로 큰 컵에서 작은 컵으로 옮겨갈 때는 그래도 주의를 해야 합니다. 그래서 이 경우는 혹시나 넘치지 않을까? 등의 확인을 할 필요가 있겠죠?


그래서 이것을 우리는 명시적 형변환(Casting)이라고 합니다.


‘나 이거 이렇게 바꿀 거야!’라고 이야기한다는 것이죠.

이는 크기는 같더라도 모양이 다른 경우에도 마찬가지입니다.


사실 이 형변환이라는 것은 이렇게 단순한 내용은 아닙니다. 그 자세한 내용은 이후 다형성에서 자세히 다뤄볼 예정입니다.


지금은 그저 형변환이라는 녀석과, 언제 명시적 형변환이 되는지, 언제 묵시적 형변환이 되는지만 기억하도록 합시다.

keyword
매거진의 이전글변수 스코프