Java中的System.out.println()
和System.err.println()
有什麼區別?System.out.println()和System.err.println()之間的區別
回答
在Java System.out.println()
將打印到您正在使用的系統之外的標準。另一方面,System.err.println()
將打印到標準錯誤。
如果您使用的是簡單的Java控制檯應用程序,兩個輸出將是相同的(在命令行或控制檯),但你可以重新配置流,因此例如,System.out
仍然打印到控制檯,但System.err
寫到一個文件。
另外,Eclipse等IDE顯示爲System.err
紅色文本,System.out
默認爲黑色文本。
這些命令使用不同的輸出流。默認情況下,這兩條消息都將打印在控制檯上,但可以將其中一個或兩個都重定向到一個文件。
java MyApp 2>errors.txt
這將重定向到System.err
文件errors.txt
。
'java myapp 2> errors.txt'什麼是'2>'以及如何有用?你可以解釋嗎? – UnKnown 2016-04-01 02:29:06
System.out
的主要目的是給出標準輸出。
System.err
的主要目的是給出標準誤。
看着這些
http://www.devx.com/tips/Tip/14698
http://wiki.eclipse.org/FAQ_Where_does_System.out_and_System.err_output_go%3F
System.out的是 「標準輸出」(標準輸出)和System.err是 「錯誤輸出」(錯誤)。與System.in(stdin)一起,這些是Unix模型中的三個標準I/O流。大多數現代編程環境(C,Perl等)都支持這種模式。
標準輸出流用於打印來自程序「正常操作」的輸出,而錯誤流用於「錯誤消息」。這些需要分開 - 儘管在大多數情況下它們都出現在同一個控制檯上。
假設您有一個簡單的程序,您可以在其中輸入電話號碼並打印出具有該號碼的人。如果你輸入了一個無效號碼,程序會通知你該錯誤,但它不應該這樣做作爲答案:如果你輸入「999-ABC-4567」並且程序打印一條錯誤信息「Not a valid號碼「,這並不意味着有一個名爲」不是有效號碼「的人的號碼是999-ABC-4567。因此它不會向標準輸出打印任何內容,並且錯誤輸出中會顯示消息「不是有效的數字」。
我認爲這是最好的答案,因爲它解釋了流的含義。 – 2015-02-05 15:02:21
值得注意的是,OS有一個System.err和System.out的隊列。請看下面的代碼:
public class PrintQueue {
public static void main(String[] args) {
for(int i = 0; i < 100; i++) {
System.out.println("out");
System.err.println("err");
}
}
}
如果你編譯並運行程序,你會看到的輸出在控制檯的命令混合起來。
如果您只使用System.out或System.err,則操作系統將保持正確的順序。但是,如果您同時使用這兩個選項,它可以隨意選擇要在控制檯旁邊打印的內容。
即使在這段代碼,你可以看到,爲了有時混合起來:
public class PrintQueue {
public static void main(String[] args) {
System.out.println("out");
System.err.println("err");
}
}
「一個操作系統對於System.err和System.out都有一個隊列。」這是一個非常籠統的,不一定準確的陳述。你在什麼基礎上做出這種表述? [引文需要] 在控制檯應用程序(如'cmd'或'terminal')中,兩個流(此答案稱爲「隊列」)似乎都合併(因爲它們顯示在相同的終端仿真器中),但它們實際上是分開的。有關詳細信息,請參見[stdout','stderr'和'stdin'](https://stackoverflow.com/a/3385261/2225787)之間的區別。 – 2017-11-03 13:51:16
- 1. 爲什麼在System.out.println之前打印System.err.println?
- 2. '+ ='和'= +'之間的區別?
- 3. {!!之間的區別!!}和{{}}
- 4. ==和case之間的區別?
- 5. '#','%'和'$'之間的區別
- 6. | =和^ = css之間的區別
- 7. 「%〜dp0」和「。\」之間的區別?
- 8. .eq之間的區別。和==
- 9. ==和.equals()之間的區別?
- 10. `%in%`和`==`之間的區別
- 11. 爲什麼System.out.println(+ c1)和System.out.println(「c1」= + c1)的區別?
- 12. SPFile和PublishingPage類別之間的區別
- 13. System.Timers.Timer Enabled = true和.Start()之間的區別Enabled = true和.Start()之間的區別
- 14. NSthread和NStimer和NSNotifcation之間的區別?
- 15. Java和C#和.NET之間的區別
- 16. sys.log()和console.log()和console.error()之間的區別?
- 17. $ .ajax()和$ .get()和$ .load()之間的區別
- 18. javascript中的/ * * /和//之間的區別
- 19. python中的[]和[,,]之間的區別
- 20. QWidget的setStyleSheet和QApplication之間的區別
- 21. CKeditor的getHtml()和getData()之間的區別
- 22. make中的「$(shell ...)」和「$$(...)」之間的區別
- 23. C中的/ +和+之間的區別?
- 24. Alamofire的responseJSON和responseData之間的區別
- 25. WordPress的:site_id和blog_id之間的區別?
- 26. '|'之間的區別和 '+' 的位操作
- 27. 春季的/ **和/ *之間的區別
- 28. Satchmo的local_settings.py和settings.py之間的區別
- 29. String.Compare和CultureInfo的CompareInfo之間的區別
- 30. XMLReader.Create()和新的XMLTextReader()之間的區別
此外,System.out的緩衝,和System.err不 – 2010-07-02 05:27:59
忘了這一點,THX清理起來noelmarkham – 2010-07-02 05:39:34
不排除你的答案,但它通常被稱爲標準輸出和標準錯誤(stdout/stderr),而不是標準輸出和錯誤輸出。 +1提前道歉,除了那個挑剔之外,你是對的。 – paxdiablo 2010-07-02 05:40:18