我編了下面的代碼,如何價值的變化動態
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,你能請別人向我解釋原因嗎?
我編了下面的代碼,如何價值的變化動態
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,你能請別人向我解釋原因嗎?
它以0開頭,所以它是八進制表示法。其實x
的值爲1*8^1 + 0*8^0 = 8
。
作爲JLS狀態:
八進制標記由一個ASCII數字0,接着的ASCII數字0的一個或多個 至7
OctalNumeral:
0 OctalDigits
感謝您的回答。 –
int x = 010
前綴「 0「的值爲x
使得編譯器將其視爲八進制值。
在java中,如果你從0開始,那麼你說的是數字是八進制數。
http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.1
八進制標記由一個ASCII數字0,隨後的一個或多個的ASCII數字0到7用下劃線穿插的,並且可以代表正,零或負的整數。
請參閱http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.1 - 編譯器正在按照它的意思去做...... –