5

我已经用 Java 随便编程了一段时间,但我仍然有一些关于基础知识的迫切问题。我听说我应该使用 System.out.println() 来显示来自某些人的数据,而其他人则给了我不同的想法(例如 PrintStream 或其他东西)。在 Java 中打印到控制台的最佳方式是什么?

4

9 回答 9

15

如果您刚刚开始并想将一些字符串打印到控制台,那么 System.out.println() 就可以了。把你的基础打好,然后你就可以深入了解 Java I/O 的细节。

于 2010-07-23T16:31:26.597 回答
14

System.out 一个打印流。

如果您的主要目标是与控制台交互,请查看java.io.Console. 如果您的主要目标是进行某种日志记录,请使用 Java Logging API 或 log4j 之类的日志记录框架。

于 2010-07-23T16:31:11.983 回答
2

System.out 适合打印到控制台。但是,我发现努力使用 java.util.logging 对我来说是一个更好的选择。(或一些日志系统。)

这取决于您尝试显示的信息。如果是用于控制台用户交互,System.out 是完美的。如果要显示调试信息,日志记录可能是要走的路,因为它可以让您在需要时对事物进行更多控制。

(在初始设置之后,日志记录实用程序几乎与使用 System.out 一样透明。)

于 2010-07-23T16:35:07.653 回答
1

有点取决于你在做什么。我几乎总是建议使用 Java 日志记录 API (java.util.logging)。System.out.println 更像是一个“调试工具”,但即便如此,您也可以使用 JDK 的日志记录 API 对输出进行更多控制......

于 2010-07-23T16:32:37.700 回答
0

使用 log4j 并直接输出到标准输出。然后很容易根据需要切换到日志文件。

于 2010-07-23T16:34:06.497 回答
0

直接使用System.out是最简单且通常最有效的方法。如果您有很多要打印的内容,您可以使用BufferedOutputStream.

通过创建要更有效地打印的字符串可以获得一些效率。如果有很多连接正在进行,请查看StringBuilder.

于 2010-07-23T16:35:03.317 回答
0

yu可以设置

System.setOut(new PrintStream("all-my-sysouts-go-in-this-file.txt");

然后做sysoyts...

yu可以使用baretail跟踪它们...

希望这可以帮助..

拉杰。

于 2010-07-23T16:54:18.153 回答
0

我会建议使用 Java Logging APIs

于 2010-07-23T17:08:37.940 回答
0

是的,打印到控制台的最简单有效的方法通常是 System.out.print() 和 System.out.println() 但如果要发送大量输出, System.out.println() 可能是效率低下,因为它是行缓冲的,并且做了很多与 Unicode 处理相关的工作。由于其缓冲区大小较小,System.out.println() 不太适合在批处理模式下处理许多重复输出。每一行都被立即刷新。在这种情况下,您可能需要使用 BufferedOutputStream 或 BufferedWriter。

重要的是要注意 System.out 并不总是转到应用程序控制台或终端。System.out 指向应用程序标准输出通道;在 C/C++ 中,它被称为标准输出。这可能会发送到控制台,但也可能会发送到用户决定发送它的任何地方。例如一个文件,然后打印到 System.out 的所有内容都将在文件 my-app-output.txt 中结束。

因此,如果您想发送常规输出,请使用 System.out。如果您想发送错误消息或用户通知,并且很有可能转到控制台,请使用 System.err.print() 和 System.err.println()。

在 1.6 之前的 Java 版本中,没有可移植的方式来获得通往“真实”控制台的通道。在 1.6 中,有一个对象类专门用来表示控制台:java.io.Console。可以使用静态方法 console() 从 System 类获得对这个唯一对象的引用。

但是,如果您的要求是调试整个应用程序,那么正如大家所说,使用记录器是最好的方法。

于 2010-07-23T18:53:19.117 回答