19

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

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

4

4 回答 4

30

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 应用程序,因此在编写控制台应用程序时,会使用、print和其他将输出到.printlnprintfSystem.out

于 2009-02-14T00:57:31.413 回答
3

如果您需要控制浮点数的精度、进行填充等,那就更好了。 System.out.print 可以打印出各种东西,但您不能对精度和填充进行细粒度控制。

于 2009-02-14T00:48:54.757 回答
3

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

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

于 2009-02-14T00:49:47.033 回答
2

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

于 2009-02-14T08:06:23.053 回答