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输出的位置顺序很可能和你期望的不一样。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java劝退师、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值