java.lang.System的in和out成员在哪里初始化?

时间:2016-01-26 01:30:07

标签: java io jvm printstream

我有两个与System类java相关的问题。

首先,初始化的(输入)和输出(输出)对象在哪里?由于这些对象在System类中声明为静态且未初始化,并且System类没有构造函数。

第二个问题是,在(输入)对象被声明为输入流,这就是为什么它读取字节数据而out对象也是outputStream,然后它为什么能够写入所有类型的原始数据。 Stream用于读/写字节数据。不要说它调用toString方法。

1 个答案:

答案 0 :(得分:3)

System班级成员inouterr在私人函数initializeSystemClass()中初始化。此函数由JVM初始化过程调用。

成员out 只有OutputStream。它是PrintStream,并且具有扩展API。所有接受基本类型参​​数的print()方法都使用相应的String.valueOf()方法来创建表示值的String对象。然后通过OutputStreamWriter实例汇集这些字符串,该实例使用特定的字符编码将文本编码为字节。生成的字节将写入适当的文件描述符。