为什么 int j = 012 给出输出 10?

2022-09-04 06:07:35

在我的实际项目中,意外发生的是我修改过的小程序。

我不明白为什么它给出输出10

public class Int
{
    public static void main(String args[])
    {
        int j=012;//accidentaly i put zero 
        System.out.println(j);// prints 10??
    }
}

之后,我放了两个零,仍然给出输出10。

然后我将012更改为0123,现在它给出输出83?

谁能解释一下为什么?


答案 1

比我把012改成0123,现在它给出输出83?

因为,它被认为是八进制基数(8),因为该数字在前导中有0。因此,它对应的十进制值为 10。

012 :

(2 * 8 ^ 0) + (1 * 8 ^ 1) = 10

0123 :

(3 * 8 ^ 0) + (2 * 8 ^ 1) + (1 * 8 ^ 2) = 83

答案 2

前导零表示该数字被解释为八进制数而不是十进制数。