java中的System.out.println - 是否在本机方法中初始化?

时间:2016-01-16 04:53:47

标签: java

我只是想知道UserProfile类中的User变量是否在out类的静态块中初始化。 System.out.println()字段被声明为最终的静态变量,等于null(System)。由于out指向null,我假设它被指向某处的out对象。但除了名为public final static PrintStream out = null;的本机方法外,我看不到代码。它是在本机方法中指出的吗?为什么这样做(任何性能优势)? 此外,PrintStreamregisterNatives()变量的文档说明了:

  

“标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于主机环境或用户指定的显示输出或另一个输出目标。“

感谢。

1 个答案:

答案 0 :(得分:3)

注册流程

Java Virtual Machine (JVM)调用

private static void initializeSystemClass()

line-1155

函数调用

setOut0(newPrintStream(fdOut, props.getProperty("sun.stdout.encoding")))处的

line-1192调用

实际native method已定义

{p} private static native void setOut0(PrintStream out); line-258;

  

然后setOut0然后初始化out类memeber。