使用System.out.println
或System.err.println
时有什么区别?在控制台应用程序中,它们似乎几乎相同。
有没有办法改变这个?
答案 0 :(得分:2)
差异在底层操作系统中定义。默认情况下,这两个流都将发送到控制台(即您的监视器)。但是,用户可以单独重定向它们。例如,在类似Unix的环境中,java MyClass > output.txt
会将System.out
重定向到文件output.txt
,但发送到System.err
的任何内容仍会转到控制台。有关详情,您可以google stdout
和stderr
;这些是大多数操作系统上这些流的典型名称。
答案 1 :(得分:1)
这里明确界定了差异:
http://docs.oracle.com/javase/6/docs/api/java/lang/System.html
还有一些方法(您可以在本文档中找到)定义如何更改这些流(System.setErr,System.setOut,System.setIn)
答案 2 :(得分:1)
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
答案 3 :(得分:0)
除了这里的其他人所说的,因为它们是两个独立的流,并发系统中的线程交错可能会导致打印命令让您惊讶,如果您可以互换使用它们。它只取决于操作系统在告诉处理器做什么时优先考虑它们。