1

使用时System.out.printlnSystem.err.println有什么区别?在控制台应用程序中,它们似乎几乎相同。

有没有办法改变这个?

4

4 回答 4

2

差异是在底层操作系统中定义的。默认情况下,这两个流都发送到控制台(即您的监视器)。但是,用户可以独立地重定向它们。例如,在类 Unix 环境中,java MyClass > output.txt将重定向System.out到文件output.txt,但发送到的任何内容System.err仍将转到控制台。更多详情,您可以谷歌搜索stdoutstderr;这些是大多数操作系统上这些流的典型名称。

于 2012-12-21T01:08:11.667 回答
1

区别在这里明确定义:

http://docs.oracle.com/javase/6/docs/api/java/lang/System.html

还定义了一些方法(您将在本文档中找到)如何更改这些流(System.setErr、System.setOut、System.setIn)

于 2012-12-21T01:09:00.770 回答
1

System.out是标准输出,System.err是错误输出。

  • 一些 IDE 控制台System.out以标准字体和System.out红色显示。

  • Java Web 服务器会将错误发送到两个不同的文件。

  • 使用命令行将java -jar yourjar.jar >out.txt 2>err.txt发送System.outout.txtSystem.errerr.txt

于 2012-12-21T01:11:04.530 回答
0

除了这里其他人所说的,因为它们是两个独立的流,如果您互换使用它们,并发系统中的线程交错可能会导致打印顺序让您感到惊讶。这仅取决于操作系统在告诉处理器要做什么时如何确定它们的优先级。

于 2012-12-21T01:16:39.223 回答