关于以0开头的"int"数字的澄清

Nav*_*rla 3 java

public class Test {

    public static void main(String[] args) {
        int i = 012;
        System.out.println(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么输出是:10?

Con*_*tin 14

如果一个数字以0开头,那么它是一个基数为8的八进制数.012是十进制的10


Mar*_*oun 7

见JLS:

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

这是一个很好的做法:

int i = 0_12;
Run Code Online (Sandbox Code Playgroud)

现在可能更清楚了,i十进制是2*8 0 + 1*8 1 = 10.