2017-10-14 73 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(但我认为它应该是5,如果m是13456)。如何改变m的新值。我应该如何操作代码来获得我的m值。

回答

3

以0开头的整数字面量被编译器解释为八进制数,而不是十进制数。所以

int m = 0013456; 

相当于

int m = 5934;