据我所知,两个人都是同一类人PrintStream.任何人都可以告诉我他们的差异......他们如何改变自己的行为?
Sri*_*nth 13
差异并不明显,因为默认情况下,大多数操作系统都会将它们写入控制台(同一文件,控制台也是文件).但是,您可以System.out写入文件,并System.err写入控制台(监视器) - 这只是一种情况.
编写一个发出System.out和System.err消息的程序,并尝试这样做:
java MyProgram > out.txt 2> err.txt # On a *NIX.
Run Code Online (Sandbox Code Playgroud)
System.out消息将转到out.txt,System.err消息将转到err.txt.要记住的基本要点是将System.out和System.err视为文件流(它们是什么),而不是在监视器上输出的机制,这就是我认为的初学者.
它们分别进入系统 stdout 和 stderr 流。在大多数操作系统上,这些都是不同的,可以发送到不同的地方。例如,如果您的程序的输出要由另一个程序解析,这可能很有用 - 如果它需要报告错误,stderr 通常是更好的位置,因为您可能已将其设置为引起人们的注意。