2010-07-23 128 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()可以從系統類獲得此唯一對象的參考 。

但是,如果您的要求是調試整個應用程序,那麼正如大家所說的使用記錄器是最好的方法。

相關問題