是否有充分的理由在java中使用“printf”而不是“print”?

时间:2009-02-14 00:40:06

标签: java printing printf

我没有机会在学校参加任何严肃的低级程序设计课程。 (我知道我应该继续学习“幕后花絮”才能成为更好的程序员。)我很欣赏Java的便利性,包括将任何内容粘贴到System.out.print语句中的能力。但是,您有什么理由想要使用System.out.printf吗?

另外,我应该在“真实应用程序”中避免这样的打印调用吗?使用某种UI功能将消息打印到客户端的显示器可能更好,对吗?

4 个答案:

答案 0 :(得分:28)

printf类的PrintStream方法提供string formatting类似于C中的printf函数。

printf的格式使用Formatter class' formatting syntax

当在一行中显示多个变量时,printf方法特别有用,使用字符串连接会很繁琐:

int a = 10;
int b = 20;

// Tedious string concatenation.
System.out.println("a: " + a + " b: " + b);

// Output using string formatting.
System.out.printf("a: %d b: %d\n", a, b);

此外,编写Java应用程序并不一定意味着编写GUI应用程序,因此在编写控制台应用程序时,可以使用printprintlnprintf以及将输出到的其他函数System.out

答案 1 :(得分:3)

通常在“真实”应用程序中,您将写入日志记录系统,例如java.util.Logging或commons logging,它们能够记录各种级别的详细程度(即“调试”模式,该模式将被禁用)生产环境)。但是,对于快速和脏的临时调试,有时System.out.println()是最简单的方法(假设您的运行时环境将标准输出转储到可以读取它的位置)。

我还应该提到,您始终可以使用“String.format()”来使用格式和变量参数列表创建字符串(然后将此字符串传递给日志记录方法或System.out.println)。这通常比将一堆变量连接成一个字符串更好。

答案 2 :(得分:2)

最好是你需要控制浮点数的精度,做填充等.System.out.print可以打印出各种东西,但你不能用精细的控制精度和填充它

答案 3 :(得分:2)

如果使用大多数真实程序,则使用日志记录。可以通过日志记录配置打开/关闭调试消息。以log4j为例。