默认情况下 System.in 指的是什么?
What does System.in refer to by default?
read()
方法在 InputStream
class 中声明为抽象方法。但是我们可以使用 System.in.read()
.
从键盘读取
我的问题是 'in' 是 InputStream
class 的引用。所以要使用 read()
方法必须引用 InputStream
.
的一些子 class
默认情况下,“in
”指的是什么class?我们可以编写代码来找到这个问题的答案吗?
正如您在源代码中看到的那样,它是一个 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();
}
回答您的具体问题:是的,您可以通过编写代码找出System.in
的class。
这是您正在寻找的应用程序:
public class SystemDotInClassFinder {
public static void main(String[] args) {
System.out.println(System.in.getClass().getName());
}
}
运行 这个脚本产生:
java.io.BufferedInputStream
read()
方法在 InputStream
class 中声明为抽象方法。但是我们可以使用 System.in.read()
.
我的问题是 'in' 是 InputStream
class 的引用。所以要使用 read()
方法必须引用 InputStream
.
默认情况下,“in
”指的是什么class?我们可以编写代码来找到这个问题的答案吗?
正如您在源代码中看到的那样,它是一个 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();
}
回答您的具体问题:是的,您可以通过编写代码找出System.in
的class。
这是您正在寻找的应用程序:
public class SystemDotInClassFinder {
public static void main(String[] args) {
System.out.println(System.in.getClass().getName());
}
}
运行 这个脚本产生:
java.io.BufferedInputStream