測試輸出System.err與System.out

來源:http://www.cnblogs.com/guozp/p/6099902.htmlhtml

一、System.out在JVM和操做系統都具備緩存功能,輸出的東西不必定實時輸出,可能積累幾個字符纔會一塊輸出緩存

二、System.err 不帶緩存(默認,可修改),會實時輸出,打印的東西能夠立馬顯示在屏幕。
三、若是使用了log4j的日誌記錄,System.err會被記入日誌,System.out不會。
四、JDK的解釋是System.out是一般輸出信息的方式,System.err是用在顯示錯誤信息或者system.out被重定向之後,須要當即讓用戶注意到的信息的輸出。測試

注意:單用其中一種都不會出問題,可是若是混用的話(System.err和System.out),就會輸出順序可能不是本身想要的。千萬不要小看這個輸出順序問題,當你測試線程的輸出順序或者其餘依賴順序來判斷執行過程的時候,這個時候就若是輸出亂序的話,可能就會讓你放棄某個方案。spa

若是測試依賴順序時必定要注意!操作系統

附上簡單的用例:線程

public class Test {

    public static void main(String[] args) {
        System.out.println("start...");
        System.err.println("middle...");
        System.out.println("end...");
    }
    
}

理想輸出:日誌

       start...
       middle...
       end...code

屢次測試會出現如下輸出:htm

       middle...blog

       start...       end...

相關文章
相關標籤/搜索