parseInt vs printf%o格式修饰符

时间:2014-08-27 15:05:51

标签: java

为什么,

System.out.println(Integer.parseInt("17", 8));

打印出来: 15

和,

System.out.printf("%o", 17);

打印出来: 21

Aren他们应该返回17的八进制值?

3 个答案:

答案 0 :(得分:8)

您的第一个示例将八进制值17转换为十进制,即15。

您的第二个示例将十进制值17转换为八进制,即21。

如果您修改第二个示例以使用017(八进制17),您将得到相同的结果。

答案 1 :(得分:0)

根据Java API

 parseInt(String s, int radix)
  • s - 这是十进制的字符串表示。
  • radix - 这将用于将String s转换为整数。

因此,您Integer.parseInt("17", 8)将转换" 17"使用基数值8得到十进制,结果为15

"%o"用于格式化为八进制值,因此17将表示为八进制值。结果将是21

所以你得到的所有输出都是正确的。

答案 2 :(得分:0)

System.out.printf("%o", 17);

这用于将整数转换为八进制值

System.out.println(Integer.parseInt("17", 8));

这会将字符串(ocatal值)转换为整数。

相关问题