System.in属于哪个输入类,为什么?

The*_*ris 9 java io inheritance

代码

import java.io.*;

class ioTest1{
   public static void main(String args[]){
      System.out.println(System.in.getClass());
   }
}
Run Code Online (Sandbox Code Playgroud)

System.in属于BufferedInputStream该类的返回.这是为什么?

由于类System定义System.inInputStream,我可以看到结果是如何不可能的.但是为什么以前的代码不能返回继承自的另一个类InputStream,例如DataInputStream

Kay*_*man 12

正如在评论中解释说,有这将阻止任何System.inDataInputStream,但考虑到BufferedInputStream是没有廉价的InputStream,包括数据的缓冲(总是一个好主意),它更有意义给予最普通类型的可能.

然后,开发人员可以使用例如a来封装缓冲流,DataInputStream如果程序是通过管道二进制数据馈送,或者InputStreamReader如果程序正在从用户接收文本数据.

System.in是一个BufferedInputStream因为它不需要任何其他东西.