首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >写法的奇怪行为

写法的奇怪行为
EN

Stack Overflow用户
提问于 2013-12-27 07:07:56
回答 4查看 88关注 0票数 2

我看了一些PrintStream类的方法,遇到了写(),根据控制台中打印的文档,我们需要调用System.out.flush();.But,我怀疑如果我写这些行

代码语言:javascript
复制
System.out.write(40);
System.out.write(10);

然后(也被打印出来了,我知道10代表新行,但是我想知道为什么它只发生在我编写的新line.If上

代码语言:javascript
复制
 System.out.write(40);
 System.out.write(32); 32 for space then also nothing gets printed.

游行示威

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-12-27 07:19:57

来自PrintStream.write

代码语言:javascript
复制
if ((b == '\n') && autoFlush)
   out.flush();
}

所以,如果你写一个新的行到一个System.out,它将自动刷新。Btw javadoc也说:

将指定的字节写入此流。如果字节是换行符,并且启用了自动刷新,那么就会调用刷新方法。

票数 5
EN

Stack Overflow用户

发布于 2013-12-27 07:18:11

可能输出流是行缓冲的,也就是说,当它看到行尾时,它会自动刷新.为了保证您的输出,您应该始终使用刷新()。

票数 1
EN

Stack Overflow用户

发布于 2013-12-27 07:21:32

这似乎是PrintStream中的一个竞赛条件。当编写的输出包含字符代码时,OutputStream强制刷新底层OutputStream,但没有其他时间,而且没有任何类型的终结器可以确保JVM在标准输出周围的缓冲输出在JVM退出时被刷新。

班级System.out使用了128个字节的缓冲区,如果您输出足够多的字符来填充缓冲区(我在编写(字符时插入了一个128个计数的for循环),您将在终端上看到输出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20796432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档