Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java parseInt vs printf%o格式修改器_Java - Fatal编程技术网

Java parseInt vs printf%o格式修改器

Java 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); 这是十进制的

为什么,

打印输出:15

以及

打印输出:21


它们不应该返回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,我知道是的。但是为什么呢?我想我们永远不会知道。:)谢谢你的回答谢谢你的回答