System.err.println()输出顺序问题
今天在写代码的时候遇到一个打印问题
ArrayList<String> tables = xx.tables();
StringBuffer aaa=new StringBuffer("");
int aaaa=0;
for (int i = 0; i < tables.size();i++) {
aaaa++;
aaa.append("元素"+i+",");
if ((i+1)%20==0){
System.out.println(aaa+"\n----------------------------分界线----------------------------");
System.err.println("----------------------------分界线----------------------------");
aaa=new StringBuffer("");
}
}
System.out.println(aaa);
System.out.println(aaaa+"张表");
这是直接执行的结果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S3p6ZG7V-1615602820722)(C:\Users\wangjing921\AppData\Roaming\Typora\typora-user-images\image-20210310185543689.png)]
这是debug一步一步执行的结果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1CpkRYrd-1615602820725)(C:\Users\wangjing921\AppData\Roaming\Typora\typora-user-images\image-20210310185931327.png)]
通过输出结果发现正常运行和debug运行出来的结果不一样
原因
err和out不是同一个流,且out输出流有缓存,err则直接输出
结论
如果要求输出顺序,尽量不要使用err