我看了一些PrintStream类的方法,遇到了写(),根据控制台中打印的文档,我们需要调用System.out.flush();.But,我怀疑如果我写这些行
System.out.write(40);
System.out.write(10);然后(也被打印出来了,我知道10代表新行,但是我想知道为什么它只发生在我编写的新line.If上
System.out.write(40);
System.out.write(32); 32 for space then also nothing gets printed.游行示威
发布于 2013-12-27 07:19:57
来自PrintStream.write
if ((b == '\n') && autoFlush)
out.flush();
}所以,如果你写一个新的行到一个System.out,它将自动刷新。Btw javadoc也说:
将指定的字节写入此流。如果字节是换行符,并且启用了自动刷新,那么就会调用刷新方法。
发布于 2013-12-27 07:18:11
可能输出流是行缓冲的,也就是说,当它看到行尾时,它会自动刷新.为了保证您的输出,您应该始终使用刷新()。
发布于 2013-12-27 07:21:32
这似乎是PrintStream中的一个竞赛条件。当编写的输出包含字符代码时,OutputStream强制刷新底层OutputStream,但没有其他时间,而且没有任何类型的终结器可以确保JVM在标准输出周围的缓冲输出在JVM退出时被刷新。
班级为System.out使用了128个字节的缓冲区,如果您输出足够多的字符来填充缓冲区(我在编写(字符时插入了一个128个计数的for循环),您将在终端上看到输出。
https://stackoverflow.com/questions/20796432
复制相似问题