2012-07-13 4 views
4

작동하지 = 난을 int로하지만 노력하고, 내가INT의 전 = 99 099 자바에서

int i = 99; 

를 쓸 때 잘 작동 것으로 나타났습니다. 내 IDE에서

java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: <any> 

, 나는 빨간 점은 integer number too large: 099 말을 참조하십시오 내가

int i = 099; 

을 말할 때 나는 예외를 얻을.

왜 이것이 컴파일되지 않습니까? 099가 99와 같지 않습니까?

+2

'099'는 Java에서 8 진수로 간주됩니다. [자세한 내용] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.1). – Lion

답변

14

임의의 선도자 인 0은 Java에서 숫자를 8 진수로 해석합니다. 따라서 010은 실제로 8입니다.

System.out.println(010); 

는 OUTPUT : 당신이 알고

8 

그리고, 89은 8 진수를 사용할 수 없습니다.

+0

C에서 상속받은 –

+0

@ ThorbjørnRavnAndersen 그래, 대부분의 Java 구문은 C에서 상속됩니다. –

6

8 진수입니다. 8 진수는 십진수 및 16 진수와 같은 다른 값과 구별되도록 접두어가 붙습니다. 0