Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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 在Jshell中println和printf有什么不同_Java_Printf_Println - Fatal编程技术网

Java 在Jshell中println和printf有什么不同

Java 在Jshell中println和printf有什么不同,java,printf,println,Java,Printf,Println,为什么println和printf在Jshell中显示不同 我最近发现了关于JShell的东西,想尝试一些东西,我遇到了这个 为什么println的输出是普通输出,printf的输出是所有这些东西的输出???返回一个PrintStream,所以jshell向您显示了转换为字符串的返回值(在$1和$2之后的东西),这是这样显示的,因为PrintStream不会覆盖toString,所以它使用 正如Rogue在评论中指出的,由于printf不打印换行符,除非得到指示,否则返回值与打印值在同一行 不

为什么println和printf在Jshell中显示不同

我最近发现了关于JShell的东西,想尝试一些东西,我遇到了这个

为什么println的输出是普通输出,printf的输出是所有这些东西的输出???

返回一个
PrintStream
,所以jshell向您显示了转换为字符串的返回值(在
$1
$2
之后的东西),这是这样显示的,因为
PrintStream
不会覆盖
toString
,所以它使用

正如Rogue在评论中指出的,由于
printf
不打印换行符,除非得到指示,否则返回值与打印值在同一行


不返回任何内容,因此只显示打印的值(和换行)。

对于OP来说,可能还需要注意的是,printf不会自动打印换行,所以“println”返回void,“printf”返回PrintStream,因为返回的值要存储在某个地方,所以这些奇怪的东西就是存储“printf”值的地方?我明白了吗?
System.out.printf(“…%n”,…)
用于结尾处所需的换行符(类似于
\n
或println)。@user11246297您不必将其存储在某个位置,只是您没有对其执行任何操作,因此shell会显示它。如果您键入
1+3
,您将得到相同的结果。您要求jshell执行一个操作,它将向您显示结果。然后,您甚至可以将该结果用于进一步的操作(在第一次操作后尝试
$1+3
),您实际尝试打印的部分“只是”一个副作用。我希望该结果对您有效。不要忘记将答案标记为已接受,以便将来的访问者也可以自信地使用该解决方案。要将答案标记为已接受,您需要单击大复选标记(✓) 在答案的左边。您也可以查看以了解更多信息。如果有任何疑问/问题,请随时在此发表评论。