2011-12-18 8 views
4

이 코드 작업을보고 놀랐습니다. 나는 char와 int가 Java에서 두 개의 별개의 데이터 유형이고 ascii equivelent를 제공하기 위해 char을 int로 변환해야한다고 생각했습니다. 왜이게 효과가 있니?Java에서 char 및 int

String s = "hello"; 
int x = s.charAt(1); 
System.out.println(x); 
+1

은'char' int'는 32 비트 부호 값이 '16 비트 부호없는 값이고 (강조 첨가). int에 char을 할당 할 수 있습니다. –

답변

3

charint 두 가지 종류가 있지만 intchar 이상의 정밀도를 가지고 있기 때문에이 작동합니다. 즉, char의 모든 값은 int으로 표시 될 수 있으므로 캐스트에서 데이터가 손실되지 않습니다.

6

charint으로 자동 변환 될 수 있습니다. ,

  • 문자가 int로 ...

    긴, ​​플로트, 또는 더블

: 기본 유형에

다음 19 특정 변환이 확대 원시적 변환 호출됩니다 JLS 5.1.2보기

...

기호의 확대 변환 정수형 T에 대한 정수형 값은 정수형 값의 2의 보수 표현을 부호 확장하여 더 넓은 형식을 채 웁니다. char를 정수 유형 T로 확대 변환하면 더 넓은 형식을 채우기 위해 char 값의 표현이 0으로 확장됩니다.

관련 문제