在Java中,使用“printf”而不是“print”有充分的理由吗?

20

在学校里,我没有机会学习任何严肃的低级编程课程。(我知道我真的应该开始学习“幕后”知识以成为一个更好的程序员。)我很欣赏Java的便利性,包括将任何东西放入System.out.print语句的能力。但是,是否有任何理由想要使用System.out.printf呢?

此外,在“真正的应用程序”中,我应该避免像这样的打印调用吗?最好使用某种UI函数将消息打印到客户端的显示器上,对吧?

4个回答

29

PrintStream类的printf方法提供类似于C语言中的printf函数的字符串格式化

printf的格式使用Formatter类的格式语法

当在一行中显示多个变量并使用字符串连接会很麻烦时,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
一个更好的例子是使用%+x.yf的浮点数,其中x和y是不同的数字。 - Calyth

3

如果您需要控制浮点数的精度、填充等,最好使用其他方法。System.out.print可以打印各种内容,但无法对精度和填充进行细粒度控制。


3
通常在“真正”的应用程序中,您会编写到日志记录系统,例如java.util.Logging或commons logging,它们具有记录各种详细程度的能力(即“调试”模式,在生产环境中将被禁用)。但是,对于快速而肮脏的临时调试,有时System.out.println()是最简单的方法(假设您的运行时环境将标准输出转储到某个可以读取的位置)。
我还应该提到,您始终可以使用“String.format()”使用格式和变量参数列表创建字符串(然后将此字符串传递给日志记录方法或System.out.println)。这通常比将一堆变量连接成一个字符串更好。

2

在大多数实际程序中,都会使用日志记录。通过日志配置,可以打开/关闭调试消息。以log4j为例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接