今天有位同事在使用System.err和System.out遇上了一些小問題.
看了些資料總結下:
1.JDK文檔對兩者的解釋:
out:“標准”輸出流。此流已打開並准備接受輸出數據。通常,此流對應於顯示器輸出或者由主機環境或用戶指定的另一個輸出目標。
err:“標准”錯誤輸出流。此流已打開並准備接受輸出數據。通常,此流對應於顯示器輸出或者由主機環境或用戶指定的另一個輸出目標。按照慣例,此輸出流用於顯示錯誤消息,或者顯示那些即使用戶輸出流(變量 out 的值)已經重定向到通常不被連續監視的某一文件或其他目標,也應該立刻引起用戶注意的其他信息。
2.out和err的一個區別是,out往往是帶緩存的,而err沒有緩存(默認設置,可以改)。所以如果你用標准出錯打印出來的東西可以馬上顯示在屏幕,而標准輸出打印出來的東西可能要再積累幾個字符才能一起打印出來。如果你在應用中混用標准輸出和標准出錯就可能看到這個問題。
測試代碼:
public class Test2 { static{ System.out.println("1"); } public static void main(String[] args) { System.err.println("2"); new Test2(); } public Test2() { System.out.println("3"); } }
測試結果: 1,3的位置相對不變,2的位置隨機出現.盡量避免混用!
3.如果使用了log4j的日志記錄,System.err會被記入日志,System.out不會
ps:打印System.err在eclipse是紅色的。System.out是藍色的。
以上這篇java基礎(System.err和System.out)詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。