【问题标题】:System.out.println vs PrintWriterSystem.out.println 与 PrintWriter
【发布时间】:2013-12-21 18:22:16
【问题描述】:

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

System.out.println(result);

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

【问题讨论】:

  • 一个是 PringStream,另一个是 PrintWriter。 PrintStreams 可以提供更大的编码灵活性。我猜是使用了一些系统编码,但我不确定。
  • System.outPrintStreamPrintWriter 是 ... PrintWriter
  • PrintWriter 打印文本的速度也是两倍。

标签: java io printwriter printstream


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    System.outPrintStream 的实例

    所以你的问题缩小到PrintStream vs PrintWriter

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

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

    【讨论】:

      【解决方案3】:

      如果您必须一次打印超过 10^3 行,我建议使用 PrintWriter。

      我通过在 n=10^1 到 10^7 的情况下每次运行这些 sn-ps 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();
          }
      }
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-07-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-14
          • 1970-01-01
          • 2011-10-04
          相关资源
          最近更新 更多