为什么编译器在转换为字符串时更改int的值以及它如何获得新值。
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值。
答案 0 :(得分:3)
以0开头的整数文字由编译器解释为八进制数,而不是十进制数。所以
int m = 0013456;
相当于
int m = 5934;