我想知道,为什么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.这意味着,它始终由系统计算为八进制而不是二进制值。或者我是一个错误的方式?
答案 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