System.out .write()执行但不打印

时间:2014-05-24 09:08:37

标签: java io

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');
  }        
}

3 个答案:

答案 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()你自己。