我有以下代码
int a = 01111;
System.out.println("output1 = " + a);
System.out.println("output2 = " + Integer.toOctalString(1111));
和输出是
我期待输出如下所示。
为什么在打印直接 int 值时会给出
585
?我期待java自动将前导零的值转换为八进制。01111
和 585
之间有什么关系? 最佳答案
前导 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/