输出的地方不一样 你如果 java a >out.txt 2>err.txt a是可以运行的class文件 System.out.println输出到out.txt System.err.println输出到err.txt
楼主看源代码 public final static PrintStream err = nullPrintStream(); public final static PrintStream out = nullPrintStream(); public void println(String x) { synchronized (this) { print(x); newLine(); } }这两个其实是一样的,在控制台(dos)下输出完全一样,只不过在一些ide上的显示效果可能会有点不一样,比如err会显示一些红色之类的别听楼上那位乱说,他明显是断章取义,不知道哪里搞了一段程序看到既有out又有err就搬过来了,他那个我估计是程序里面System.setErr,System.setOut,他给你的那些运行参数(>out.txt 2>err.txt)估计是重定向的输出文件名
你如果
java a >out.txt 2>err.txt
a是可以运行的class文件
System.out.println输出到out.txt
System.err.println输出到err.txt
public final static PrintStream err = nullPrintStream();
public final static PrintStream out = nullPrintStream(); public void println(String x) {
synchronized (this) {
print(x);
newLine();
}
}这两个其实是一样的,在控制台(dos)下输出完全一样,只不过在一些ide上的显示效果可能会有点不一样,比如err会显示一些红色之类的别听楼上那位乱说,他明显是断章取义,不知道哪里搞了一段程序看到既有out又有err就搬过来了,他那个我估计是程序里面System.setErr,System.setOut,他给你的那些运行参数(>out.txt 2>err.txt)估计是重定向的输出文件名
System.setErr() System.setOut() 是重定向两个流的方法。
以下为Sun JDK1.5中文文档中的 可能有点泛泛了
------------------------------
System.err
“标准”错误输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。按照惯例,此输出流用于显示错误消息,或者显示那些即使用户输出流(变量 out 的值)已经重定向到通常不被连续监视的某一文件或其他目标,也应该立刻引起用户注意的其他信息。 System.out
“标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。