2014-03-25 4 views
0

내가 자바의 자동 형 변환이 "확대 경로"라고 무언가로 요약 될 수 있음을 이해하고, 그것은 다음과 같습니다char 형식이 Java의 "확장 경로"기능이 아닌 이유는 무엇입니까?

바이트 -> 짧은 -> INT -> 긴 -> 플로트 -> 더블

다음 코드는 OK 컴파일, 일부 문자/INT 변환을 보여 자바의 확대 경로에 위의 필요한 변환을 감안할 때

char c = '1'; 
int i = c; // char to int 

// char to int, and vice versa 
switch (c) { 
    case 1: 
} 
switch (i) { 
    case '1': 
} 

, 왜 문자 유형 기능하지 않습니다? 감사.

+1

이유 중 하나는'char'는 부호가 없으므로 'short'보다 의미가 좁다는 것입니다. – chrylis

답변

3

char to int은 물론 확대 변환입니다. 그러나 int ~ char은 두 번째로 생각하고있는 것처럼 보입니다 switch 진술. 실제로는 case'1' char 유형이 있으며 유니 코드 코드 포인트를 기준으로 int 유형으로 변환됩니다. 또한 JLS §5.1.2 - Widening Primitive conversionchar에서 int으로 확대 변환이 있음을 분명히합니다.

+0

감사. 나는 어딘가에서 "바이트 -> short -> int -> long -> float -> double"라인을 복사하여 붙여 넣어야했는데, 이것이 확장을위한 올바른 규칙이라고 생각했습니다. – user2911290

+0

@ user2911290 실제로 복사 - 붙여 넣기를하는 동안 빠뜨린'char' -''int'와'byte' ->'short'-'int'의 변환이 있어야합니다. –

관련 문제