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();
}
}
结果 可能是
3
1
2
或者
13
2
或者
1
3
2
或者
1
3
2
或者
1
23
或者
1
2
3
System.out.println可能会被缓冲,而System.err.println不会
System.out
“标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。
System.err.println()是要缓冲的,所以优先级会高点,而System.out.println()是不需要缓冲的,所以优先级会低点.
很多开发者都不了解为什么出错和调试时使用System.err。
当输出一个流时,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仍然存在于缓存中,结果也就丢失了。
使用System.err来报告错误、调试程序就可以避免这种情况出现,它将使每一次操作的结果都输出出来。例如以下程序:
for(int i=0; i<56; i++) {
System.err.println(i);
... // containing an error
}
在每一次i等于54时都将显示错误信息。
分享到:
相关推荐
恒生电子笔试题十分有用,大家可以下载看看,可以应付恒生电子的笔试
2013年恒生电子笔试试题,能帮助你在下一届笔试中获得更多的经验
恒生电子2016年校园招聘笔试题 技术提 包括C++与java
历年恒生电子招聘笔试题,全套题型,包括选择题(Java、c++)两部分
恒生电子2018年校园招聘笔试题参考,请大家酌情参考,祝大家面试成功,加油!!!
校招恒生电子2020笔试题
恒生电子笔试题 Java。 历年恒生电子招聘笔试题,全套题型,包括选择题(Java、c++)两部分 笔试题 Java 恒生电子
秋招
恒生Java笔试题
恒生电子笔试, 恒生电子笔试, 恒生电子笔试, 恒生电子笔试
自己参加的恒生电子的2017的校园招聘的笔试题,希望对各位有用。
杭州恒生电子的笔试题,13-18年的都有,想要的就拿去吧
恒生电子2018校园招聘笔试题恒生电子2018校园招聘笔试题恒生电子2018校园招聘笔试题
恒生电子笔试题.docx
(2017恒生电子笔试题)_恒生电子2018校园招聘笔试题
恒生校招往年笔试题
恒生电子以往笔试题2018年前的。 同时面经分享地址:https://blog.csdn.net/qq_38275941/article/details/89604756