System.out.println与System.err.println

区别一

System.in(标准输入流),System.out(标准输出流),System.err(标准错误输出流)

  • err是运行期异常和错误反馈的输出流的方向

通常, err 对应于显示器输出或者由主机环境或用户指定的另一个输出目标。按照惯例,此输出流用于显示错误消息,或者显示那些即使用户输出流(变量out的值)已经重定向到通常不被连续监视的某一文件或其他目标,也应该立刻引起用户注意的其他信息。

通常, out 对应于显示器输出或者由主机环境或用户指定的另一个输出目标。

区别二

  • 在语言层面的实现三个文件描述符都是可以重定向的
  • 在unix shell或windows command line中使用管道或重定向,则只是针对标准输入输出

System.out.println 能重定向到别的输出流,在屏幕上将看不到打印的东西,
System.err.println 只能在屏幕上实现打印,即使你重定向了也一样

System.setOut(new PrintStream(new FileOutputStream(new File("c:/test.txt "))));
System.out.println( "haha ");

System.setErr() System.setOut() 是重定向两个流的方法。

区别三

  • 标准输出往往是带缓存的,而标准出错没有缓存(默认设置,可以改)
public class TestCodeSeg {
    
    
    static {
    
    
        System.out.println("1");
    }
    {
    
    
        System.out.println("2");
    }
    public TestCodeSeg(){
    
    
        System.err.println("3");
    }

    public static void main(String[] args) {
    
    
        new TestCodeSeg();
    }
}

===> 1,2顺序不变,3输出不定位置不定 可能在输出1或2,还没有输出换行时输出3。err是没有缓冲的,所以“3”的输出是随机的

  • System.out.println输出有缓存,优先级低;System.err.println是立即输出,优先级高
  • System.out.println可能会被缓冲;System.err.println不会

情况一:

  • 当输出一个流时,JVM和操作系统共同决定何时输出这个流。也就是说,尽管开发者键入了:
  • System.out.print("Test Output:");
  • JVM和操作系统的组合体并不会立即输出这个流。相反,它将保持等待状态直到将要输出的东西达到一定的量。

情况二:

假设输入以下指令:
System.out.println(“Debugging Info.”);

  • JVM可能同意输出;操作系统可能决定暂不输出。

由于这个原因,在调试程序时想要发现出错的位置就有可能成为问题:

for(int   i=0;   i<56;   i++)   {
    
      
  System.out.println(i);  
  ...   //   containing   an   error  
  }

====》 错误可能出现在i等于54时,但是可能JVM在i等于49时就结束输出了。50到54仍然存在于缓存中,结果也就丢失了。

 for(int   i=0;   i<56;   i++)   {
    
      
  System.err.println(i);  
  ...   //   containing   an   error  
  }

====》 在每一次i等于54时都将显示错误信息。

区别四

  • 用err打印出的 字符串,再eclipse的console会显示成红色
  • log4j记录日志且设定错误等级,System.err的输出将记录到日志中

参考文档:
https://blog.csdn.net/lydong_/article/details/79812507
https://blog.csdn.net/u014753393/article/details/49259215#
System.out.println()和System.err.println()

猜你喜欢

转载自blog.csdn.net/fggsgnhz/article/details/104948456
今日推荐