使用这两个有什么区别吗?何时会优先使用一个而不是另一个?
System.out.println(result);
对抗
PrintWriter out = new PrintWriter(System.out);
out.println(result);
out.flush();
使用这两个有什么区别吗?何时会优先使用一个而不是另一个?
System.out.println(result);
对抗
PrintWriter out = new PrintWriter(System.out);
out.println(result);
out.flush();
System.out
是一个 PrintStream
,而另一个是一个PrintWriter
。基本上,PrintStream
应该用于写入一串字节流,而PrintWriter
应该用于写入一串字符流(因此它处理字符编码等)。System.out
是PrintStream
的实例。
因此,你的问题可以缩小为 PrintStream
vs PrintWriter
所有由PrintStream
打印的字符都使用平台默认的字符编码转换为字节。(Syso直接写入到系统输出/控制台)
PrintWriter
类应该在需要写入字符而不是字节的情况下使用。
如果您需要一次打印超过10^3行的内容,我建议使用PrintWriter。
我运行了这些代码片段,分别针对n=10^1至10^7运行了3次,并计算了它们的平均执行时间。
class Sprint{
public static void main(String[] args) {
int n=10000000;
for(int i=0;i<n;i++){
System.out.println(i);
}
}
}
import java.io.*;
class Pprint{
public static void main(String[] args) {
PrintWriter out = new PrintWriter(System.out);
int n=10000000;
for(int i=0;i<n;i++){
out.println(i);
}
out.flush();
}
}
是的,有一点不同。out.println()
是短语,用于 JSP,而 PrintWriter
则用于 servlet。 out.println()
也是从 PrintWriter 派生而来。
System.out
是一个PrintStream
,而PrintWriter
则是一个PrintWriter
。 - Brian Roach