默认初始化为八进制|| int a = 0 - >八进制

时间:2014-01-27 14:38:59

标签: java

我想知道,为什么java在数字之前为octals设置了0的语法。

意思是:

int a = 011;
System.out.println("Output: " + a);    //Output: 9

因此,合乎逻辑的是,这也必须以八进制处理:

int b = 0;
System.out.println("Output: " + b);    //Output: 0

为什么java会像这样工作? int的默认初始化为0.这意味着,它始终由系统计算为八进制而不是二进制值。或者我是一个错误的方式?

2 个答案:

答案 0 :(得分:5)

不,在你的第二个例子中,0是小数 - 参见JLS #3.10.1

  

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

因此,八进制中的0将表示为int a = 00;

答案 1 :(得分:3)

在你的第二个例子中,0是十进制而不是八进制(并非两者都不相等)。

这是一个八进制0

int b = 00;
System.out.println("Output: " + b);    // Output: 0