java-System.out.println()和System.err.println()之间的区别

Java中的System.out.println()System.err.println()和有什么不一样?

user354299 asked 2020-07-08T13:45:11Z
7个解决方案
62 votes

在Java System.err中,将使用您正在使用的系统中的标准打印。 另一方面,System.out将打印到标准错误。

如果使用简单的Java控制台应用程序,则两个输出将是相同的(命令行或控制台),但是您可以重新配置流,例如System.err仍可打印到控制台,而System.out会写入文件。

另外,默认情况下,像Eclipse这样的IDE会在红色文本中显示System.err,在黑色文本中显示System.out

Carlos G. answered 2020-07-08T13:45:35Z
28 votes

System.out是“标准输出”(stdout),System.err是“错误输出”(stderr)。 与System.in(stdin)一起,它们是Unix模型中的三个标准I / O流。 大多数现代编程环境(C,Perl等)都支持此模型。

标准输出流用于打印程序“正常操作”的输出,而错误流用于“错误消息”。 它们需要分开-尽管在大多数情况下它们出现在同一控制台上。

假设您有一个简单的程序,在其中输入电话号码,它会打印出拥有该号码的人。 如果输入的数字无效,则程序应通知您该错误,但不应以此为答案:如果输入“ 999-ABC-4567”,程序将显示错误消息“无效的数字” ,这并不意味着有一个名为“无效号码”的人,其号码为999-ABC-4567。 因此,它不会在标准输出中输出任何内容,并且在错误输出中会显示消息“无效数字”。

Paul Richter answered 2020-07-08T13:46:05Z
4 votes

这些命令使用不同的输出流。 默认情况下,两种消息都将打印在控制台上,但是例如可以将其中一个或两个重定向到文件。

java MyApp 2>errors.txt

这会将System.err重定向到errors.txt文件。

Michał Piaskowski answered 2020-07-08T13:46:30Z
2 votes

System.err的主要目的是提供标准输出。

System.err的主要目的是给出标准误差。


看看这些

[HTTP://呜呜呜.的V型.com/tips/tip/14698]

[HTTP://wiki.eclipse.org/FAQ_where_does_system.呕吐_安定_system.二人_output_go%3F]

onurbaysan answered 2020-07-08T13:47:07Z
1 votes

这个答案很可能对您有帮助PrintStreamSystem.err都是相同的,都在System类中定义为PrintStream类的参考变量,public final static PrintStream out = null;public final static PrintStream err = null;

表示两者都是参考。 PrintStream类的变量。通常System.err用于打印错误消息,这增加了程序员的可重复性。

当我们使用重定向运算符时,两者之间都存在细微的差异。

ATIQ UR REHMAN answered 2020-07-08T13:47:37Z
0 votes

System.err.print是指您必须输出与用户给出的正确输入有关的特定结果,而System.err.println("duh, that's wrong);是指表明所提供的输入错误或存在其他错误的参考。

大多数IDE都将其显示为红色(System.err.print)。

Arth Tyagi answered 2020-07-08T13:48:03Z
-1 votes

值得注意的是,操作系统对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");
    }
}
Artmal answered 2020-07-08T13:48:37Z
translate from https://stackoverflow.com:/questions/3163399/difference-between-system-out-println-and-system-err-println