System.out.println与PrintWriter的区别

15

使用这两个有什么区别吗?何时会优先使用一个而不是另一个?

System.out.println(result);

对抗

PrintWriter out = new PrintWriter(System.out);
out.println(result);
out.flush();

1
一个是 PrintStream,另一个是 PrintWriter。PrintStream 可以允许更多的编码灵活性。我猜可能使用了一些系统编码,但我不确定。 - Hovercraft Full Of Eels
2
System.out 是一个 PrintStream,而 PrintWriter 则是一个 PrintWriter - Brian Roach
1
PrintWriter 打印文本的速度也大约快了一倍。 - Luigi Plinge
4个回答

12
主要区别是 System.out 是一个 PrintStream,而另一个是一个PrintWriter。基本上,PrintStream 应该用于写入一串字节流,而PrintWriter应该用于写入一串字符流(因此它处理字符编码等)。
对于大多数使用情况而言,两者没有区别。

5

System.outPrintStream的实例。

因此,你的问题可以缩小为 PrintStream vs PrintWriter

  • 所有由PrintStream打印的字符都使用平台默认的字符编码转换为字节。(Syso直接写入到系统输出/控制台)

  • PrintWriter 类应该在需要写入字符而不是字节的情况下使用。


4

如果您需要一次打印超过10^3行的内容,我建议使用PrintWriter。

性能比较最高可达10^5 性能比较最高可达10^7

我运行了这些代码片段,分别针对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();
    }
}

0

是的,有一点不同。out.println() 是短语,用于 JSP,而 PrintWriter 则用于 servlet。 out.println() 也是从 PrintWriter 派生而来。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接