2014-12-18 51 views
2
public static void main (String[] args) { 
    int a = 0010; 
    String num = Integer.toString(a); 
    System.out.println(num);  
} 

为什么打印8不是0010?Java中的Integer.toString如何正确工作?

+0

关于这个问题在这个问题上的许多变化 - 见例如http://stackoverflow.com/questions/24031843/is-00-an-integer-or-octal-in-java/24032020#24032020 – fvu

+0

可能的重复[整数与前导零](http://stackoverflow.com/questions/565634/integer-with-leading-zeroes) – fvu

回答

3

Java将解释以0开头的整数表示为octal。八进制(基数8)中的10为十进制8(基数10)。 Integer.toString()在这种情况下正在做正确的事情,因为a的值的确是8.

1

整数以二进制形式存储在内存中。有几种方法可以定义整型文字。 0010是八进制数,以8为基数。(toString)以10为底(十进制)打印。