我只是想知道UserProfile
类中的User
变量是否在out
类的静态块中初始化。 System.out.println()
字段被声明为最终的静态变量,等于null(System
)。由于out指向null,我假设它被指向某处的out
对象。但除了名为public final static PrintStream out = null;
的本机方法外,我看不到代码。它是在本机方法中指出的吗?为什么这样做(任何性能优势)?
此外,PrintStream
中registerNatives()
变量的文档说明了:
“标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于主机环境或用户指定的显示输出或另一个输出目标。“
感谢。
答案 0 :(得分:3)
注册流程
Java Virtual Machine (JVM)
调用
private static void initializeSystemClass()
line-1155
函数调用
setOut0(newPrintStream(fdOut, props.getProperty("sun.stdout.encoding")))
处的 line-1192
调用
实际native method
已定义
private static native void setOut0(PrintStream out);
line-258
;
然后
setOut0
然后初始化out
类memeber。