我有以下代码
int a = 01111;
System.out.println("output1 = " + a);
System.out.println("output2 = " + Integer.toOctalString(1111));
Run Code Online (Sandbox Code Playgroud)
和输出是
Run Code Online (Sandbox Code Playgroud)output1 = 585 output2 = 2127
我期待输出如下所示。
Run Code Online (Sandbox Code Playgroud)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 十进制。
| 归档时间: |
|
| 查看次数: |
176 次 |
| 最近记录: |