我有两个与System
类java相关的问题。
首先,初始化的(输入)和输出(输出)对象在哪里?由于这些对象在System
类中声明为静态且未初始化,并且System
类没有构造函数。
第二个问题是,在(输入)对象被声明为输入流,这就是为什么它读取字节数据而out对象也是outputStream
,然后它为什么能够写入所有类型的原始数据。 Stream用于读/写字节数据。不要说它调用toString
方法。
答案 0 :(得分:3)
System
班级成员in
,out
和err
在私人函数initializeSystemClass()
中初始化。此函数由JVM初始化过程调用。
成员out
不只有OutputStream
。它是PrintStream
,并且具有扩展API。所有接受基本类型参数的print()
方法都使用相应的String.valueOf()
方法来创建表示值的String
对象。然后通过OutputStreamWriter
实例汇集这些字符串,该实例使用特定的字符编码将文本编码为字节。生成的字节将写入适当的文件描述符。