2014-02-17 34 views
1

我编了下面的代码,如何价值的变化动态

import java.lang.*; 
public class Test 
{ 
public static void main(String[] args) 
{ 
    int x=010; 
    System.out.println("x(010):="+x); 

} 
} 

编译代码后,我得到了值8,但x的实际值是10,它是如何发生的打印值8,你能请别人向我解释原因吗?

+1

请参阅http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.1 - 编译器正在按照它的意思去做...... –

回答

4

它以0开头,所以它是八进制表示法。其实x的值为1*8^1 + 0*8^0 = 8

作为JLS状态:

八进制标记由一个ASCII数字0,接着的ASCII数字0的一个或多个 至7

OctalNumeral: 
    0 OctalDigits 
+0

感谢您的回答。 –

1

int x = 010前缀“ 0“的值为x使得编译器将其视为八进制值。