import java.io.*;
class demo
{
public static void main(String args[])
{
PrintWriter pw=new PrintWriter(System.out);
pw.println("java");
//pw.print("java");
}
}
//使用java
输出为pw.println
,但使用pw.print
输出为空,即使用print
时控制台上没有任何内容打印。
答案 0 :(得分:6)
几乎可以肯定只是缓冲 - 而且你没有冲洗它,你永远不会得到输出。来自the docs:
与PrintStream类不同,如果启用了自动刷新,则只有在调用println,printf或format方法之一时才会执行,而不是每当输出换行符时。这些方法使用平台自己的行分隔符概念而不是换行符。
尝试:
pw.flush();
在代码的末尾。
答案 1 :(得分:6)
请改为尝试:
PrintWriter pw=new PrintWriter(System.out);
pw.print("java");
pw.flush();
PrintWriter
将进行内部缓冲,println
方法会自动刷新它。
答案 2 :(得分:1)
对于自动刷新,您可以使用此构造函数
PrintWriter(OutputStream out, boolean autoFlush);
答案 3 :(得分:0)
对println()
的调用会隐式刷新输出缓冲区,而对print()
的调用则不会。尝试使用print()
,然后拨打pw.flush()
。
另请注意,PrintWriter的构造函数包含一个在任何写入调用后自动刷新的选项。