为什么PrintStream继承字节流?



据我所知java.io列表分为字节流和字符流。用于读写字节的字节流和用于读写字符的字符流。

PrintStream具有以下继承层次:

Object <- OutputStream <- FilterOutputStream <- PrintStream.

因此,我做出了PrintStream与读写字节有关的决议。

但是如果像这样写:

    PrintStream output = new PrintStream(System.out);
    output.print(true);
    output.print((int) 123);
    output.print((float) 123.456);
    output.printf(Locale.UK, "Text + data: %1$d", 123);
    ...

我在控制台上看到字符。这种情况把我弄糊涂了。请澄清我的误解。术语字节流字符流的真正含义是什么?

PrintStream类是由于历史原因而存在的语义异常。在Java设计者认识到1需要为字符流和字节流提供不同的"堆栈"之前,这个类就存在于Java 1.0中。它代表了在Java中进行简单文本输出的"原始方式"…在Java 1.1中引入Writer及其子类型之前。

所以事实上,字节流和字符流(很可能)的意思就是它们看起来的意思。无论如何,它们的含义在Java教程中有最好的描述:

  • 字节流。
  • 字符流。

1 -他们可能更早意识到这一需求,但有压倒一切的"商业原因"让Java 1.0尽快发布。

相关内容

  • 没有找到相关文章

最新更新