使用时System.out.println
或System.err.println
有什么区别?在控制台应用程序中,它们似乎几乎相同。
有没有办法改变这个?
差异是在底层操作系统中定义的。默认情况下,这两个流都发送到控制台(即您的监视器)。但是,用户可以独立地重定向它们。例如,在类 Unix 环境中,java MyClass > output.txt
将重定向System.out
到文件output.txt
,但发送到的任何内容System.err
仍将转到控制台。更多详情,您可以谷歌搜索stdout
和stderr
;这些是大多数操作系统上这些流的典型名称。
区别在这里明确定义:
http://docs.oracle.com/javase/6/docs/api/java/lang/System.html
还定义了一些方法(您将在本文档中找到)如何更改这些流(System.setErr、System.setOut、System.setIn)
System.out
是标准输出,System.err
是错误输出。
一些 IDE 控制台System.out
以标准字体和System.out
红色显示。
Java Web 服务器会将错误发送到两个不同的文件。
使用命令行将java -jar yourjar.jar >out.txt 2>err.txt
发送System.out
到out.txt
和System.err
到err.txt
除了这里其他人所说的,因为它们是两个独立的流,如果您互换使用它们,并发系统中的线程交错可能会导致打印顺序让您感到惊讶。这仅取决于操作系统在告诉处理器要做什么时如何确定它们的优先级。