2014-02-17 36 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使得編譯器將其視爲八進制值。