System.out.println与System.err.println的区别(输出顺序!!!)
System.out.println与System.err.println的区别(输出顺序!!!)
System.out.println与System.err.println的区别(输出顺序!!!)
今天看到网上别人写的代码中有一行System.err.println用来输出,以前从没用过,今天一用出了很多问题,总结如下:
- err是运行期异常和错误反馈的输出流的方向
- System.err.println只能在屏幕上实现打印,即使你重定向了也一样
- 用err打印出的 字符串,再eclipse的console会显示成红色
- 标准输出往往是带缓存的,而标准出错没有缓存(默认设置,可以改)
参看以下代码了解
下面输出顺序如何?
1. public class TestCodeSeg
2. {
3. static
4. {
5. System.out.println("1");
6. }
7. {
8. System.out.println("2");
9. }
10. public TestCodeSeg()
11. {
12. System.err.println("3");
13. }
14. public static void main(String[] args)
15. {
16. new TestCodeSeg();
17. }
18. }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
结果:1,2顺序不变,3输出不定位置不定。
原因:System.out.println输出有缓存,System.err.println是立即输出,可能在输出1或2,还没有输出换行时输出3。