我有以下代码

int a = 01111;
System.out.println("output1 = " + a);
System.out.println("output2 = " + Integer.toOctalString(1111));

和输出是



我期待输出如下所示。



为什么在打印直接 int 值时会给出 585 ?我期待java自动将前导零的值转换为八进制。
01111585 之间有什么关系?

最佳答案

前导 0 表示八进制数(基数为 8)。

01111(八进制)为1*8^3+1*8^2+1*8^1+1*8^0=585(十进制)
Integer.toOctalString(1111) 将十进制数 1111 转换为八进制字符串。 2127 八进制 (2*8^3+1*8^2+2*8^1+7*8^0) 是 1111 十进制。

关于java - 关于整数值中的前导零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31357188/

10-12 01:39