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

时间:2014-01-29 12:26:43

标签: java

public class Test {

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

为什么输出是:10

4 个答案:

答案 0 :(得分:14)

如果一个数字从0开始,那么它是一个基数为8的八进制数。 012是十进制的10

答案 1 :(得分:7)

请参阅JLS

  

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

写一个good practice

int i = 0_12;

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

答案 2 :(得分:3)

八进制数: 以0开头的任何数字都被视为八进制数(012),即基数为8的数字系统

简单的八进制数评估:

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

Octal Number

For More information about Number System

答案 3 :(得分:2)

012是十进制10的八进制值。所以你告诉java在八进制位012打印整数。这里:http://www.asciitable.com/显示八进制到十进制的vululue转换。