준호씨의 블로그

java 에서 char 이 short 로 그냥 타입캐스팅 되지 않는 이유 본문

개발이야기

java 에서 char 이 short 로 그냥 타입캐스팅 되지 않는 이유

준호씨 2016. 5. 4. 09:07
반응형

친구의 질문. java 에서 char 데이터가 int 로는 타입 캐스팅 되는데 short 로는 안되는 이유?


인터넷 찾아 보니 char 는 unsigned 도 short 는 signed 라서 안된다고 함

char 는 0 to 2^16 - 1 (0 to 65535)
short 는 -2^15 to 2^15 - 1 (−32,768 to 32,767)

좀 안 와 닿을 수 있는데
http://cafe.naver.com/javachobostudy/21 를 보면 아래와 같은 말이 있다.
short과 char은 모두 2 byte의 크기를 갖지만, short의 범위는 -215 ~ 215-1(-32768~32767)이고 char의 범위는 0~216-1(0~65535)이므로 서로 범위가 달라서 둘 중 어느 쪽으로의 형변환도 값 손실이 발생할 수 있으므로 자동적으로 형변환이 수행될 수 없다.

아무튼 java 공식 문서나 java 의 소스 코드가 아니라 신뢰도가 100% 는 아니지만 대충 맞는 말인거 같다. 물론 강제로 char 를 (short) 로 강제 타입 캐스팅 할 수는 있지만 기본적으로는 개발자의 실수를 방지 하기 위해 막아 둔 듯 하다.

뭐 정확한 이유는 언어를 만든 사람들이 알겠지. 공식 문서 같은게 어딘가 있을 거 같은데 아직 못찾았음.


반응형
Comments