A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 段玉磊 初级黑马   /  2012-8-10 23:27  /  1265 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

1 个回复

倒序浏览
本帖最后由 杨文宇 于 2012-8-10 23:44 编辑

System.out.println 能重定向到别的输出流,这样的话你在屏幕上将看不到打印的东西了,如重定向输出到一个txt的log日志中。
System.err.println只能在屏幕上实现打印,即使你重定向了也一样。
使用err打印出的字符串,在eclipse的控制台中会显示成红色。(也算区别吧.....)
  
另外:
   一个小程序
class Test{
public static void main(String[] args) {
  for(int i = 1;i<=10000;i++){
   
   System.out.println(1000/(800-i)+i);//先多次运行out
   //System.err.println(1000/(800-i)+i);//在多次运行system.err
  }
}
}
运行多次会发现:用out输出时打印出的错误位置会不同,还会输出错误后面的数据。而err始终能定位到错误。
所以:
  err是运行期异常和错误反馈的输出流的方向。
  err在调试程序总是能精确的找到出错位置,并且停止运行。
  而out在调试程序时想要发现出错的位置可能就比较麻烦了,这应该与java虚拟机和操作系统有关。

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马