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

cod*_*leb 2 java

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

手段:

int a = 011;
System.out.println("Output: " + a);    //Output: 9
Run Code Online (Sandbox Code Playgroud)

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

int b = 0;
System.out.println("Output: " + b);    //Output: 0
Run Code Online (Sandbox Code Playgroud)

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

ass*_*ias 5

不,在你的第二个例子中,0是小数 - 比较JLS#3.10.1:

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

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