八进制值将其分配给int

Ami*_*mit 4 java

在测验中,我发现了一个问题,我需要从下面的程序中计算出来

 public static void main(String[] args) {
    short x = 0;
    int b = 08; 
    x +=b;

    System.out.println("" + b + x );
}
Run Code Online (Sandbox Code Playgroud)

它给出了编译错误

 int b = 08;
Run Code Online (Sandbox Code Playgroud)

因为它是八进制值,所以我尝试了一些不同的值

 int b = 07 // working fine (decimal of same is 7)
 int b = 08 // (Decimal value 8) // Compilation error
 int b = 09 // (Decimal value 9) // Compilation error
 int b = 010 // (Decimal value 8) // No Compilation error
Run Code Online (Sandbox Code Playgroud)

由于08和010具有相同的十进制数,因此08为什么会出现编译错误.

The*_*ind 5

因为在八进制表示法中,010!= 08.实际上,八进制数系统08中不存在.您可以使用的只是数字(以a开头).0-70