public class BRRead {
public static void main(String[] args) {
int b;
b='A';
System.out .write(b);
System.out .write('\n');
}
}
所以当我执行上面的程序时,我得到了预期的输出--A
但是当注释掉最后一行System.out.write('\n');
时程序执行但不打印输出 - A.
任何人都可以解释这里到底发生了什么吗?
public class BRRead {
public static void main(String[] args) {
int b;
b='A';
System.out .write(b);
//System.out .write('\n');
}
}
答案 0 :(得分:2)
public void write(int b)
将指定的字节写入此流。如果该字节是换行符和 启用自动刷新,然后将调用flush方法。
在您的示例中,flush()
不会自动调用,如果您明确调用它,则会打印该字符。
答案 1 :(得分:0)
在代码末尾调用System.out.flush()
答案 2 :(得分:0)
来自here
基本上,Java并不能保证输出实际发送到 文件,套接字,屏幕或任何其他输出设备,直到您致电 您的OutputStream或Writer上的flush(),或直到它关闭。该 OutputStream或Writer可以缓冲输出,这意味着它将是 保存并发送更大的块以提高效率。你真的不可能 预测如何做到这一点。
顺便说一下,PrintWriter.println()会自动调用flush() 虽然这并不重要。但无论如何,一般规则 如果你想让输出立即显示在某个地方,那就是你了 不使用PrintWriter.println()(或PrintStream.println()),然后调用 flush()你自己。