值如何动态变化

时间:2014-02-17 11:44:32

标签: java

我编译了以下代码,

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,请问有人解释原因。

3 个答案:

答案 0 :(得分:4)

它以0开头,所以它是八进制表示法。

实际上,x的值为1*8^1 + 0*8^0 = 8

正如JLS所述:

  

八进制数字由ASCII数字0后跟一个或多个组成   ASCII数字0到7

OctalNumeral:
    0 OctalDigits

答案 1 :(得分:1)

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

答案 2 :(得分:1)

在java中,如果你从0开始,那么你就知道这个数字是八进制的。

http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.1

  

八进制数字由ASCII数字0后跟一个或多个以下划线散布的ASCII数字0到7组成,并且可以表示正整数,零或负整数。