Java System.out.write()执行,但不执行';t打印

Java System.out.write()执行,但不执行';t打印,java,io,Java,Io,所以当我执行上面的程序时,我得到了预期的输出-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'); } } 将指定的字

所以当我执行上面的程序时,我得到了预期的输出-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');
   }    
}
将指定的字节写入此流。如果字节是换行符,则 启用自动刷新后,将调用刷新方法


在您的示例中,
flush()
不会自动调用,如果您显式调用它,字符将被打印。

在代码末尾调用
System.out.flush()

基本上,Java不保证输出实际上被发送到 文件、套接字、屏幕或任何其他输出设备,直到调用 在OutputStream或Writer上刷新(),或直到关闭为止。这个 OutputStream或Writer可以缓冲输出,这意味着它将 为了提高效率,存储并发送更大的数据块。你真的不能 预测这将如何实现

PrintWriter.println()将自动调用flush(),顺便说一下, 虽然这在这里并不重要。但在任何情况下,一般规则 如果您希望输出立即出现在某个地方,那么 不使用PrintWriter.println()(或PrintStream.println()),然后调用 冲洗你自己


我打赌在写
'\n'
时,sysout流会被刷新。尝试写入
System.out.flush()
系统输出写入(b)在第二个示例中。@ZouZou这就是原因。后台的PrintStream需要刷新它。是的,它有帮助,你怎么知道呢?我现在读的这本书没有提供这么多细节?@saurabhkumar这是来自javaapi文档的。
public class BRRead {
  public static void main(String[] args)   {
    int b;
    b='A';
    System.out .write(b);
    //System.out .write('\n');
  }        
}
public void write(int b)