Java parseInt vs printf%o格式修改器
为什么, 打印输出:15 以及 打印输出:21Java parseInt vs printf%o格式修改器,java,Java,为什么, 打印输出:15 以及 打印输出:21 它们不应该返回17的八进制值吗?第一个示例将八进制值17转换为十进制,即15 第二个示例将十进制值17转换为八进制值21 如果将第二个示例修改为使用017(八进制17),则会得到相同的结果。第一个示例将八进制值17转换为十进制,即15 第二个示例将十进制值17转换为八进制值21 如果您将第二个示例修改为使用017(octal 17),您将得到相同的结果。根据Java API System.out.printf("%o", 17); 这是十进制的
它们不应该返回17的八进制值吗?第一个示例将八进制值17转换为十进制,即15 第二个示例将十进制值17转换为八进制值21
如果将第二个示例修改为使用
017
(八进制17),则会得到相同的结果。第一个示例将八进制值17转换为十进制,即15
第二个示例将十进制值17转换为八进制值21
如果您将第二个示例修改为使用
017
(octal 17),您将得到相同的结果。根据Java API
System.out.printf("%o", 17);
- 这是十进制的字符串表示形式
- 基数-这将用于将字符串s转换为整数
Integer.parseInt(“17”,8)
将使用基值8将“17”转换为十进制,其结果是15
“%o”
用于格式化为八进制值,因此17将表示为八进制值。结果将是21
因此,您得到的所有输出都是正确的。根据JavaAPI
System.out.printf("%o", 17);
parseInt(String s, int radix)
- 这是十进制的字符串表示形式
- 基数-这将用于将字符串s转换为整数
Integer.parseInt(“17”,8)
将使用基值8将“17”转换为十进制,其结果是15
“%o”
用于格式化为八进制值,因此17将表示为八进制值。结果将是21
因此,您得到的所有输出都是正确的
parseInt(String s, int radix)
这用于将整数转换为其八进制值
System.out.printf("%o", 17);
这将字符串(octal值)转换为整数
这用于将整数转换为其八进制值
System.out.printf("%o", 17);
这将字符串(ocatal值)转换为整数。只是一个加法,可能OP想要使用
整数。在第一部分中,toString(17,8)
,我一直想知道为什么语言设计者选择前导零来表示八进制。这太令人困惑了。@uraf长期以来都是这样。对于十六进制,您可以选择0x20和20h,具体取决于语言。至少八进制是一致的。@Kayaman,我知道是的。但是为什么呢?我想我们永远不会知道。:)仅仅是一个加法,OP可能想在第一部分中使用Integer.toString(17,8)
,我一直想知道为什么语言设计者选择前导零来表示八进制。这太令人困惑了。@uraf长期以来都是这样。对于十六进制,您可以选择0x20和20h,具体取决于语言。至少八进制是一致的。@Kayaman,我知道是的。但是为什么呢?我想我们永远不会知道。:)谢谢你的回答谢谢你的回答