System.out.println()
Java和Java有什么区别System.err.println()
?
7 回答
在 JavaSystem.out.println()
中将打印到您正在使用的系统之外的标准。另一方面,System.err.println()
将打印到标准错误。
如果您使用的是简单的 Java 控制台应用程序,两个输出将是相同的(命令行或控制台),但您可以重新配置流,例如,System.out
仍然打印到控制台但System.err
写入文件。
此外,像 Eclipse 这样的 IDE默认System.err
以红色文本和黑色文本显示。System.out
System.out 是“标准输出”(stdout),System.err 是“错误输出”(stderr)。与 System.in (stdin) 一起,这些是 Unix 模型中的三个标准 I/O 流。大多数现代编程环境(C、Perl 等)都支持这种模型。
标准输出流用于打印程序“正常操作”的输出,而错误流用于“错误消息”。这些需要分开——尽管在大多数情况下它们出现在同一个控制台上。
假设您有一个简单的程序,您可以在其中输入电话号码并打印出拥有该号码的人。如果您输入了无效号码,程序应该通知您该错误,但它不应该这样做作为答案:如果您输入“999-ABC-4567”并且程序打印错误消息“不是有效号码” ,这并不意味着有一个名为“Not a valid number”的人,其号码是 999-ABC-4567。因此它不会在标准输出中打印任何内容,并且会在错误输出中打印消息“Not a valid number”。
您可以设置执行环境来区分这两个流,例如,将标准输出打印到屏幕,将错误输出打印到文件。
这些命令使用不同的输出流。默认情况下,这两条消息都将打印在控制台上,但例如可以将其中一条或两条重定向到一个文件。
java MyApp 2>errors.txt
这将重定向System.err
到errors.txt
文件。
System.out
的主要目的是提供标准输出。
System.err
的主要目的是给出标准误差。
看看这些
http://www.devx.com/tips/Tip/14698
http://wiki.eclipse.org/FAQ_Where_does_System.out_and_System.err_output_go%3F
这个答案很可能对您有帮助,它非常简单
System.err
,并且System.out
两者都相同,都在类中定义为类
System
的引用变量,
并且
PrintStream
public final static PrintStream out = null;
public final static PrintStream err = null;
表示两者都是参考。类的变量PrintStream
。通常System.err
用于打印错误消息,这增加了程序员的可编辑性。
当我们使用重定向运算符时,两者都有一个细微的差别。
System.out.println("wassup");
是指当您必须输出与用户给出的正确输入有关的某个结果时,而是System.err.println("duh, that's wrong);
显示提供的输入错误或存在其他错误的参考。
大多数 IDE 以红色 ( System.err.print
) 显示这一点。
值得注意的是,一个操作系统有一个 System.err 和 System.out 队列。考虑以下代码:
public class PrintQueue {
public static void main(String[] args) {
for(int i = 0; i < 100; i++) {
System.out.println("out");
System.err.println("err");
}
}
}
如果你编译并运行程序,你会看到控制台中的输出顺序是混乱的。
如果您仅使用 System.out 或 System.err,操作系统将保持正确的顺序。但是,如果您同时使用这两者,它可以随机选择要在控制台旁边打印的内容。
即使在此代码段中,您有时也可以看到顺序混淆了:
public class PrintQueue {
public static void main(String[] args) {
System.out.println("out");
System.err.println("err");
}
}