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

我没有机会在学校参加任何严肃的低级程序课程。 (我知道我真的应该继续学习“幕后”,成为一名更好的程序员)。我很欣赏Java的便利,包括将任何东西粘贴到System.out.print语句中的能力。 但是,是否有任何理由要改为使用System.out.printf

另外,我是否应该避免在“真实应用程序”中这样打印电话? 使用某种UIfunction将消息打印到客户端显示屏可能会更好,对吗?

PrintStream类的printf方法提供类似于C中的printf函数的string格式

printfFormatter使用Formatter类的格式化语法 。

当在一行中显示多个variables时, printf方法可能特别有用,而使用string连接会很麻烦:

 int a = 10; int b = 20; // Tedious string concatenation. System.out.println("a: " + a + " b: " + b); // Output using string formatting. System.out.printf("a: %db: %d\n", a, b); 

此外,写入Java应用程序并不一定意味着编写GUI应用程序,所以在编写控制台应用程序时,可以使用printprintlnprintf等函数输出到System.out

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

我还应该提到,你总是可以使用“String.format()”来创build一个使用格式和variables参数列表的string(然后把这个string传递给一个日志方法或System.out.println)。 这通常比将一堆variables连接成一个string更好。

如果你需要控制浮点数的精度,填充等等,System.out.print可以打印出各种各样的东西,但是不能精确地控制精度和填充。

如果大多数真正的程序,使用日志logging。 debugging消息可以通过日志configuration打开/closures。 以log4j为例。