13

使用这两个有区别吗?您什么时候会使用其中一种?

System.out.println(result);

相对

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

4 回答 4

11

主要区别在于System.out是 aPrintStream而另一个是 a PrintWriter。本质上,PrintStream应该用来写字节流,而应该用来写字符流(因此它处理字符编码等)。PrintWriter

对于大多数用例,没有区别。

于 2013-12-21T18:36:24.433 回答
5

System.out是的实例PrintStream

所以你的问题缩小到PrintStreamvsPrintWriter

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

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

于 2013-12-21T18:35:32.337 回答
3

如果您必须一次打印超过 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();
    }
}
于 2020-07-26T08:21:27.160 回答
0

是的,有一点不同。out.println()很短,在 JSPPrintWriter中使用,而在 servlet 中使用。out.println()也是从 PrintWriter 派生的。

于 2013-12-21T18:38:34.187 回答