2017-10-14 2 views
-1

왜 컴파일러는 문자열로 변환하는 동안 int 값을 변경하고 어떻게 새로운 값을 가져 오나요?문자열 변환에 대한 Java 정수가 실패했습니다.

int n = 1003456; 
String str = Integer.toString(n); 
System.out.println(str.length() + " " + n + " " + str); 
int m = 0013456; 
String string = Integer.toString(m); 
System.out.println(string.length() + " " + m + " " + string); 

상기 프로그램의 출력은 :

7 1003456 1003456 
4 5934 5934 

출력의 첫 번째 라인은 명백하지만, 출력의 두 번째 라인은 정수의 크기가 4 인 표시 (하지만 난해야한다고 생각 m이 13456 인 경우 5) .m의 새 값이 변경됩니다. 내 m 값을 얻기 위해 코드를 어떻게 조작해야합니까?

답변

3

0으로 시작하는 정수 리터럴은 10 진수가 아닌 8 진수로 컴파일러에서 해석됩니다. 그래서

int m = 0013456; 

int m = 5934; 
에 해당
관련 문제