System.in默认引用什么?

时间:2016-07-22 04:48:55

标签: java io system.in

read()方法在InputStream类中声明为abstract。但我们可以使用System.in.read()从键盘读取。

我的问题是'在'是InputStream类的参考。因此,使用read()方法必须引用InputStream的某些子类。

到了什么课程' in'默认是指?我们可以编写代码来找到这个问题的答案吗?

2 个答案:

答案 0 :(得分:3)

回答您的具体问题:是的,您可以通过编写代码来查找System.in类。

这是您正在寻找的应用程序:

public class SystemDotInClassFinder {
    public static void main(String[] args) {
        System.out.println(System.in.getClass().getName());
    }
}

运行此脚本会产生:

java.io.BufferedInputStream

答案 1 :(得分:1)

正如您在源代码中看到的那样,它是一个BufferedInputStream:

private static void initializeSystemClass() {
    props = new Properties();
    initProperties(props);
    VM.saveAndRemoveProperties(props);
    lineSeparator = props.getProperty("line.separator");
    Version.init();
    FileInputStream arg = new FileInputStream(FileDescriptor.in);
    FileOutputStream arg0 = new FileOutputStream(FileDescriptor.out);
    FileOutputStream arg1 = new FileOutputStream(FileDescriptor.err);
    setIn0(new BufferedInputStream(arg));
    setOut0(newPrintStream(arg0, props.getProperty("sun.stdout.encoding")));
    setErr0(newPrintStream(arg1, props.getProperty("sun.stderr.encoding")));
    loadLibrary("zip");
    Terminator.setup();
    VM.initializeOSEnvironment();
    Thread arg2 = Thread.currentThread();
    arg2.getThreadGroup().add(arg2);
    setJavaLangAccess();
    VM.booted();
}