java基础(System.err和System.out)

今天有位同事在使用System.err和System.out遇上了一些小问题.

看了些资料总结下:

  1.JDK文档对两者的解释:

  out:  “标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。

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

  2.out和err的一个区别是,out往往是带缓存的,而err没有缓存(默认设置,可以改)。所以如果你用标准出错打印出来的东西可以马上显示在屏幕,而标准输出打印出来的东西可能要再积累几个字符才能一起打印出来。如果你在应用中混用标准输出和标准出错就可能看到这个问题。

测试代码:

public class Test2 {
    static{
        System.out.println("1");
    }
    public static void main(String[] args) {
        System.err.println("2");
        new Test2();
    }
    public Test2() {
        System.out.println("3");
    }

}

测试结果: 1,3的位置相对不变,2的位置随机出现.尽量避免混用!

  3.如果使用了log4j的日志记录,System.err会被记入日志,System.out不会

  ps:打印System.err在eclipse是红色的。System.out是蓝色的。

时间: 2024-10-26 04:00:30

java基础(System.err和System.out)的相关文章

测试输出System.err与System.out

1.System.out在JVM和操作系统都具有缓存功能,输出的东西不一定实时输出,可能积累几个字符才会一块输出 2.System.err 不带缓存(默认,可修改),会实时输出,打印的东西可以立马显示在屏幕.3.如果使用了log4j的日志记录,System.err会被记入日志,System.out不会.4.JDK的解释是System.out是通常输出信息的方式,System.err是用在显示错误信息或者system.out被重定向以后,需要立即让用户注意到的信息的输出. 注意:单用其中一种都不会

System.err和System.out

System.err和System.out是错误输出和标准输出 System.err.println只能在屏幕上实现打印,err是运行期异常和错误反馈的输出流的方向. 使用err打印出的字符串,在eclipse的console会显示成红色的. System.out.println 能重定向到别的输出流,这样你在屏幕上将看不到打印的东西.System.out.println可能会被缓冲,而System.err.println不会 参考:http://blog.sina.com.cn/s/blog_

java的IO操作:System类对IO的支持。

目标: 1,掌握SYStem对IO的三种支持: system.out system.in system.err 2,掌握system.out及system.err的区别. 3,掌握输入,输出重定向. System类的常量 java给system类对IO有一定支持,预制了三个常量. PrintStream out,PrintStream err,InputStream in. 使用static final 声明的变量是全局常量,只要是常量,所有单词字母必须全部大写.但是这里没有,是java历史遗留

System.out.println()和System.err.println()

在一次笔试中遇到了一个System.err.println()的输出,之前没有见过,回来查一查,自己还是见识太短,来补充一下. 首先看一看jdk中 来一个简单的实验 第一次显示 第二次显示 1. 发现并不是顺序输出的,而且err输出不是抢在out之前,就是紧跟在之后,之间的换行没有作用了,这是为什么呢? 顺序与预料的不同并不是因为err和out的区别导致,而是因为他们是两个流,由于缓存原因导致输出顺序不同. 2.System.out.println   能重定向到别的输出流,这样的话你在屏幕上将

java基础算法之冒泡排序

接触冒泡算法还是大一了,学习C语言的冒泡算法.现在唯一记得就是冒泡与选择了.出来刚刚工作的时候觉的算法基本没撒用处,现在发现这些都是很好的基础.因此自己也准备重新拾起这些知识. 冒泡排序 泡排序是一种很简单的排序的算法,根据名字就可以知道这一个过程,一点点的把大的数移到顶部. 时间复杂度 若文件的初始状态是正序的,一趟扫描即可完成排序.所需的关键字比较次数 和记录移动次数 均达到最小值:  ,  .所以,冒泡排序最好的时间复杂度为 . 若初始文件是反序的,需要进行 趟排序.每趟排序要进行 次关键

Java基础17:Java IO流总结

Java基础17:Java IO流总结 IO流概述 在这一小节,我会试着给出Java IO(java.io)包下所有类的概述.更具体地说,我会根据类的用途对类进行分组.这个分组将会使你在未来的工作中,进行类的用途判定时,或者是为某个特定用途选择类时变得更加容易. 输入和输出 术语"输入"和"输出"有时候会有一点让人疑惑.一个应用程序的输入往往是另外一个应用程序的输出?那么OutputStream流到底是一个输出到目的地的流呢,还是一个产生输出的流?InputStre

Java基础第4天+switch语句、for,while,do...while循环语句、break,return,continue控制跳转语句

1:switch语句(掌握) (1)格式: switch(表达式) { case 值1: 语句体1; break; case 值2: 语句体2; break; ... default: 语句体n+1; break; } 格式解释说明: switch:说明这是switch语句. 表达式:可以是byte,short,int,char JDK5以后可以是枚举 JDK7以后可以是字符串 case:后面的值就是要和表达式进行比较的值 break:表示程序到这里中断,跳出switch语句 default:如

1.Java基础之System对象

毕向东老师Java基础学习笔记——System对象 今天学习Java中的System对象后,感觉这个对象对我们主要有以下几点用处. 1.获取当前操作系统版本和类型. 2.获取当前操作系统的path中的环境变量. 范例代码如下: /* System:类中的方法和属性都是静态的. out:标准输出,默认是控制台. in:标准输入,默认是键盘. 描述系统一些信息 获取系统属性信息:Propcrtics */ import java.util.*; class SystemDemo { public s

Java基础 之 System.getProperty()方法

Java基础 之 System.getProperty()方法大全 1 public static void main(String[] args) { 2 System.out.println("java版本号:" + System.getProperty("java.version")); // java版本号 3 System.out.println("Java提供商名称:" + System.getProperty("java.