我一直在Java中随便编程一段时间,但我仍然有一些关于基础问题的亟待解答的问题。我听说我应该使用System.out.println()来显示某些人的数据,而其他人则给了我不同的想法(如PrintStream或其他)。在Java中进行控制台打印的最佳方式是什么?我应该使用System.out.println()还是别的?
回答
System.out
是a PrintStream。
如果您的主要目标是与控制台交互,请查看java.io.Console
。如果您的主要目标是进行某种日志记录,请使用Java Logging API或log4j之类的日志框架。
如果您刚刚开始并希望将某些字符串打印到控制台,则System.out.println()将会正常。获得您的基础知识,然后您可以深入了解Java I/O的更多细节。
类型取决于你在做什么。几乎总是我会建议使用Java日志API(java.util.logging)。 System.out.println更像是一个“调试工具”,但即使如此,您仍然可以使用JDK的日志API对输出进行更多的控制......
使用log4j并将输出直接输出到标准输出。然后根据需要轻松切换到日志文件。
直接使用System.out
是最简单且通常最有效的方法。如果你有很多印刷品,你可以使用BufferedOutputStream
进行调查。
创建要更高效地打印的字符串可以获得一些效率。如果有很多拼接正在完成,请查看StringBuilder
。
System.out适合打印到控制台。但是,我发现尽量使用java.util.logging代替我是更好的选择。 (或某些日志记录系统)。
这取决于您试图显示的信息。如果是用于控制台用户交互,System.out是完美的。如果要显示debug-ish信息,日志记录可能是最好的选择,因为它可以让你对需要的东西有更多的控制。
(初始设置之后,日志记录工具是几乎一样的System.out使用透明。)
郁可设置
System.setOut(新的PrintStream(“ALL-MY-sysouts -go功能于这个-file.txt的”);
,然后做sysoyts ...
郁可使用baretail跟踪他们...
希望这有助于...
raj。
我会建议使用Java日志记录API
是,打印到控制台的最简单而有效的方式通常是 是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()可以从系统类获得此唯一对象的参考 。
但是,如果您的要求是调试整个应用程序,那么正如大家所说的使用记录器是最好的方法。
- 1. 我应该使用contenteditable还是别的吗?
- 2. 练习115;我应该使用getters/setters还是别的?
- 3. 我应该使用public $ var还是应该使用__construct()?
- 4. 我应该使用ArithmeticException还是IllegalArgumentException?以及有什么区别?
- 5. NHibernate,我应该使用ReadCommitted还是ReadUncommited事务隔离级别?
- 6. 我应该使用PurePDF还是AlivePdf
- 7. 我应该使用ABPersonViewController还是ABUnknownPersonViewController
- 8. 我应该使用Series.replace还是Series.str.replace?
- 9. 我应该使用requestanimationframe还是setTimeout?
- 10. 我应该使用SASS还是SCSS?
- 11. 我应该使用Boost.GIL还是死了?
- 12. 我应该使用Flash还是Java?
- 13. 我应该使用partial还是show.html.erb?
- 14. 我应该使用TNSNAMES.ORA还是tnsnames.ora?
- 15. 我应该使用pygame.event.get()还是pygame.event.poll()?
- 16. 我应该使用BroadcastReceiver还是Service?
- 17. 我应该使用urandom还是openssl_random_pseudo_bytes?
- 18. 我应该使用SyncLock还是Interlocked?
- 19. 我应该使用Backbone.emulateHTTP还是php file_get_contents
- 20. 我应该使用rand()还是rand_s()?
- 21. 我应该使用XMLHttpRequest/JSON还是iFrame?
- 22. 我应该使用NSOperation还是NSRunLoop?
- 23. 我应该使用UUID还是其他?
- 24. 我应该使用UIImageview还是其他?
- 25. 我应该使用TempData还是RedirectToAction?
- 26. 我应该使用SPContext还是ClientContext?
- 27. 我应该使用Timer,Handler还是ASyncTask?
- 28. 我应该使用SQL还是JSON
- 29. 我应该使用KeyGenerator还是SecretKeyFactory?
- 30. 我应该使用AJAX还是WebSockets。
也许他们编写了Java I/O库:P – wshato 2010-07-23 19:37:44