我想知道,为什么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.这意味着,它始终由系统计算为八进制而不是二进制值.或者我是一个错误的方式?
不,在你的第二个例子中,0是小数 - 比较JLS#3.10.1:
八进制数字由ASCII数字0后跟一个或多个散布有下划线的ASCII数字0到7组成,并且可以表示正整数,零整数或负整数.
因此0,八进制将表示为int a = 00;.