java中的PrintWriter给出了意想不到的行为

shu*_*jan 2 java io printwriter

import java.io.*;
class demo
{
public static void main(String args[])
{
    PrintWriter pw=new PrintWriter(System.out);
    pw.println("java");
    //pw.print("java");
}
}
Run Code Online (Sandbox Code Playgroud)

//输出正在java使用,pw.println但输出为空,pw.print即使用时控制台上没有任何内容打印print.

Jon*_*eet 6

它几乎肯定只是缓冲 - 而且你没有冲洗它,你永远不会得到输出.来自文档:

与PrintStream类不同,如果启用了自动刷新,则只有在调用println,printf或format方法之一时才会执行,而不是每当输出换行符时.这些方法使用平台自己的行分隔符概念而不是换行符.

尝试:

pw.flush();
Run Code Online (Sandbox Code Playgroud)

在代码的最后.


ste*_*vls 6

试试这个:

PrintWriter pw=new PrintWriter(System.out);
pw.print("java");
pw.flush();
Run Code Online (Sandbox Code Playgroud)

PrintWriter打算做内部缓冲和println方法被自动冲洗它.