System.err和System.out的区别

在 java API,文档中给出的解释是:out为“标准输出流”,err为“标准错误输出流”

大多数操作系统都有三个标准文件描述符:标准输入,标准输出,标准出错。
      三个操作系统的文件描述符映射到编程语言的标准库中,往往加了一层包装,但是名字通常还是叫标准输入,标准输出,标准出错。
       在其它语言中的一般写法是:stdin,stdout,stderr(有的语言里大写,有的语言里小写)。对应Java中的System.in,System.out,System.err。

我们使用out和err的时候最直观的感觉就是

  • err.print()出来的字是红色的
  • out与err打印的不固定

前一个好理解,那么为什么打印的顺序会不一样呢 让我们先试一下

public static void main(String[] args) {
        System.err.println("err------1");
        System.out.println("ok1");
        System.err.println("err------2");
        System.out.println("ok2");
    }

多试几次发现的确如此

查阅资料发现

System.out.println   能重定向到别的输出流,比如输出到txt文本中;
而System.err.println只能在屏幕上实现打印,即便重定向也一样。

System.out.println有可能在缓存中,由OS和JVM决定是否输出,而System.err.println它将每一次操作的结果都输出来。
在ide控制台输出时,System.err.println输出的内容是红色的。

对于我们而言在调试程序的时候尽量使用out来输出,这样可以很清晰的定位到任何一个步骤,而err输出的位置顺序很可能和你期望的不一样。

正文到此结束
评论插件初始化中...
Loading...