2010-07-23 133 views
5

我一直在Java中随便编程一段时间,但我仍然有一些关于基础问题的亟待解答的问题。我听说我应该使用System.out.println()来显示某些人的数据,而其他人则给了我不同的想法(如PrintStream或其他)。在Java中进行控制台打印的最佳方式是什么?我应该使用System.out.println()还是别的?

回答

14

System.outa PrintStream。

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

15

如果您刚刚开始并希望将某些字符串打印到控制台,则System.out.println()将会正常。获得您的基础知识,然后您可以深入了解Java I/O的更多细节。

+0

也许他们编写了Java I/O库:P – wshato 2010-07-23 19:37:44

1

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

0

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

0

直接使用System.out是最简单且通常最有效的方法。如果你有很多印刷品,你可以使用BufferedOutputStream进行调查。

创建要更高效地打印的字符串可以获得一些效率。如果有很多拼接正在完成,请查看StringBuilder

2

System.out适合打印到控制台。但是,我发现尽量使用java.util.logging代替我是更好的选择。 (或某些日志记录系统)。

这取决于您试图显示的信息。如果是用于控制台用户交互,System.out是完美的。如果要显示debug-ish信息,日志记录可能是最好的选择,因为它可以让你对需要的东西有更多的控制。

(初始设置之后,日志记录工具是几乎一样的System.out使用透明。)

0

郁可设置

System.setOut(新的PrintStream(“ALL-MY-sysouts -go功能于这个-file.txt的”);

,然后做sysoyts ...

郁可使用baretail跟踪他们...

希望这有助于...

raj。

0

我会建议使用Java日志记录API

0

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

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

所以,如果你想发送正常的输出,使用System.out。如果您想要发送错误消息或用户通知,并且想要访问控制台的机会很大,请使用System.err.print()和 System.err.println()。

在1.6以前版本的Java中,没有可移植的方式让通道进入'真实'控制台 。在1.6中,有一个对象类 专门用于表示控制台:java.io.Console。使用 静态方法console()可以从系统类获得此唯一对象的参考 。

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

相关问题