System.out,stdout和cout分别是Java,C和C中的完全相同的东西吗?
为什么同一个东西有三个不同的名称(特别是当C,C和Java有很多共同点时)?
另外,我知道它们的用途是什么,但它们究竟是什么,在引擎盖下,我的意思是?
解决方法:
cout与stdout基本相同,但不同之处在于cout的类型为ostream(这实际上意味着您可以使用<
stdout附加到文件描述符(stdout是文件*). stdout文件描述符是1.因为它返回对文件描述符的引用,所以它可以在fputs和fprintf中使用.
Java System.out基本上类似于stdout(它使用带有句柄1的java.io.FileDescriptor)并传递到FileOutputStream并最终包装在BufferedOutputStream中.
这是java.lang.System的初始化方式:
/**
* Initialize the system class. Called after thread initialization.
*/
private static void initializeSystemClass() {
props = new Properties();
initProperties(props);
sun.misc.Version.init();
// Workaround until DownloadManager initialization is revisited.
// Make JavaLangAccess available early enough for internal
// Shutdown hooks to be registered
setJavaLang