2016-07-26 7 views
1

자바 디 컴파일러를 사용하고 있는데, 정수 코드에 이상한 심볼을 제공한다는 점을 제외하면 현명한 코드를 제공하는 것 같습니다. 예 :Java 디 컴파일러가 이상한 심볼을 표시합니다.

#int[] arr = new int['田']; 

이 기호의 수치는 U + 7530입니다. 이 심볼을 숫자 값으로 되돌리려면이 메커니즘을 사용하지 않아도 될까요?

이 코드는 배열 외부 예외를 제공하므로 배열 크기를 조정하는 것이 중요합니다.

+0

OS를 제공하지 않았습니다. OS 유니 코드를 필요로하는 OS 로켈을 설정해야합니다. 그렇다면 미국 또는 다른 영어 사용 언어로 설정하면 정수가 유니 코드 문자가 아닌 정수로 해석 될 수 있습니다. – Gene

+1

'(int) '田'== 30000'; 배열 인덱스는 항상 정수이기 때문에''田 ''또는'30000'을 사용하든 상관 없습니다. –

+0

고맙습니다. 이제는 의미가 있습니다. –

답변

0

바이트 코드 수준에서 지역 변수는 부울, 바이트, 문자, 단락 및 정수를 구분하지 않습니다. 모든 것은 적절한 경우에 잘라내 기 지시가 삽입 된 후드에서 int로 컴파일됩니다.

이것은 디 컴파일러가 디 컴파일 메타 데이터가 없다고 가정하면 디 컴파일러가 디 컴파일 할 유형을 임의로 결정해야 함을 의미합니다. 디 컴파일러가 정수 상수를 문자 상수로 디 컴파일하는 것으로 결정한 것 같습니다.