2011-01-23 26 views
1

如何在屏幕上来的System.out.println()方法打印字符时出是用于显示的PrintStream&的PrintWriter

+0

这可能是最好的,如果你能详细说明你的问题。我可以通过多种方式回答这个问题,但我不确定哪种方式是合适的。我也不想对我的答案不小心冒犯...... – 2011-01-23 20:02:01

回答

0

System.out的是一种特殊的PrintStream,谁的输出被显示字节类型的打印流的在控制台上。检查here以获取更多文档。

3

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

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

据创建FileOutputStream到标准出来,然后把它包装在PrintStreamFileDescriptor.out是“标准输出流的句柄”。

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

11

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

+0

+1为历史信息 – Bozho 2011-01-23 20:09:23

0

PrintStream是一个字节流和PrintWriter是字符流,但在一切都面向字节的最低水平,我什么地方读每个PrintStream结合有OutputStreamWriter,它通过这个写入器以产生用于输出字节通过了所有的字符。