关于整数前导零

我有下面的代码

int a = 01111;

System.out.println("output1 = " + a);

System.out.println("output2 = " + Integer.toOctalString(1111));

和输出是

output1 = 585

output2 = 2127

我期望输出如下。

output1 = 2127

output2 = 2127

585当我打印直接int值时,为什么会给出?我期望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十进制。

以上是 关于整数前导零 的全部内容, 来源链接: utcz.com/qa/402065.html

回到顶部