为什么PrintStream继承字节流?

时间:2014-07-14 13:21:09

标签: java io stream character bytestream

据我所知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);

    ...

我在控制台中看到了个字符。 这种情况让我困惑。请澄清我的误解。 术语字节流字符流的含义是什么?

1 个答案:

答案 0 :(得分:3)

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

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


1 - 他们可能更早地意识到了这种需求,但是有很多“商业原因”让Java 1.0很快发布。

相关问题