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. 为什么在System.out.println之前打印System.err.println?
- 3. 之间的〜/和的区别../
- 4. '#','%'和'$'之间的区别
- 5. {!!之间的区别!!}和{{}}
- 6. '+ ='和'= +'之间的区别?
- 7. “。+”和“。+?”之间的区别
- 8. .eq之间的区别。和==
- 9. #。/和#之间的区别。 ./
- 10. !=和!之间的区别==
- 11. “%〜dp0”和“。\”之间的区别?
- 12. | =和^ = css之间的区别
- 13. 之间的区别。和#
- 14. ==和case之间的区别?
- 15. “**/* /”和“** /”之间的区别?
- 16. jQuery - '。'之间的区别和“#”
- 17. “?1”和“?”之间的区别
- 18. `%in%`和`==`之间的区别
- 19. fmod和%之间的区别
- 20. 之间的区别:+和:+
- 21. 为什么System.out.println(+ c1)和System.out.println(“c1”= + c1)的区别?
- 22. 类区域和堆之间的区别
- 23. SPFile和PublishingPage类别之间的区别
- 24. 子类和类别之间的区别?
- 25. System.Timers.Timer Enabled = true和.Start()之间的区别Enabled = true和.Start()之间的区别
- 26. isForeground()和onExposed和onObscured之间的区别
- 27. $ .ajax()和$ .get()和$ .load()之间的区别
- 28. 和intent和setcontentview之间的区别
- 29. Java和C#和.NET之间的区别
- 30. NSthread和NStimer和NSNotifcation之间的区别?
此外,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