1. 程式人生 > 其它 >System.err和System.out的區別

System.err和System.out的區別

技術標籤:# Javajava程式語言

在 java API,文件中給出的解釋是:out為“標準輸出流”,err為“標準錯誤輸出流”

大多數作業系統都有三個標準檔案描述符:標準輸入,標準輸出,標準出錯。
三個作業系統的檔案描述符對映到程式語言的標準庫中,往往加了一層包裝,但是名字通常還是叫標準輸入,標準輸出,標準出錯。
在其它語言中的一般寫法是:stdin,stdout,stderr(有的語言裡大寫,有的語言裡小寫)。對應Java中的System.in,System.out,System.err。

我們使用out和err的時候最直觀的感覺就是

  • err.print()出來的字是紅色的
  • out與err列印的不固定

前一個好理解,那麼為什麼列印的順序會不一樣呢 讓我們先試一下

    public static void main(String[] args) {
        System.err.println("err------1");
        System.out.println("ok1");
        System.err.println("err------2");
        System.out.println("ok2");
    }

多試幾次發現的確如此

查閱資料發現

System.out.println 能重定向到別的輸出流,比如輸出到txt文字中;
而System.err.println只能在螢幕上實現列印,即便重定向也一樣。

System.out.println有可能在快取中,由OS和JVM決定是否輸出,而System.err.println它將每一次操作的結果都輸出來。
在ide控制檯輸出時,System.err.println輸出的內容是紅色的。

對於我們而言在除錯程式的時候儘量使用out來輸出,這樣可以很清晰的定位到任何一個步驟,而err輸出的位置順序很可能和你期望的不一樣。