1. 程式人生 > >java基礎(System.err和System.out)

java基礎(System.err和System.out)

main system 如果 環境 rgs 主機 重定向 ava 日誌記錄

今天有位同事在使用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)