我一直在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