为什么,
System.out.println(Integer.parseInt("17", 8));
打印出来: 15
和,
System.out.printf("%o", 17);
打印出来: 21
Aren他们应该返回17的八进制值?
答案 0 :(得分:8)
您的第一个示例将八进制值17转换为十进制,即15。
您的第二个示例将十进制值17转换为八进制,即21。
如果您修改第二个示例以使用017
(八进制17),您将得到相同的结果。
答案 1 :(得分:0)
根据Java API
parseInt(String s, int radix)
因此,您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值)转换为整数。