1

当 out 是用于显示字节的打印流类型时,System.out.println() 方法如何在屏幕上打印字符

4

4 回答 4

11

PrintStream在 Java 1.0 中引入并在其他中使用System.out。后来他们意识到使用平台默认编码将字节转换为字符是一个重大错误,因此他们PrintWriter后来引入了 Java 1.1,它能够接受一个OutputStreamWriter您可以指定字符编码的地方。然而改变已经太迟了System.out

于 2011-01-23T20:06:32.883 回答
3

我猜这段代码(来自java.lang.System)解释了它:

FileOutputStream fdOut = new FileOutputStream(FileDescriptor.out);
setOut0(new PrintStream(new BufferedOutputStream(fdOut, 128), true));

它正在创建FileOutputStream标准输出,然后将其包装在PrintStream. FileDescriptor.out是“标准输出流的句柄”。

它使用平台默认编码将字节转换为字符。

于 2011-01-23T20:04:32.423 回答
0

System.out 是一个特殊的 PrintStream,它的输出显示在控制台上。在这里查看更多文档。

于 2011-01-23T20:01:24.857 回答
0

PrintStream是一个字节流并且PrintWriter是一个字符流,但在最低级别,一切都是面向字节的,我在某处读过每个都PrintStream包含一个OutputStreamWriter,并且它将所有字符通过这个编写器传递以产生用于输出的字节。

于 2012-08-22T06:06:53.877 回答