当前位置: 首页 > 知识库问答 >
问题:

System类的out对象是什么时候在Java中初始化的?

鞠建安
2023-03-14

修改为final的变量必须在声明或执行构造函数时初始化。

我在系统类文件中查找,发现out对象是在私有静态void initializeSystemClass()方法中初始化的,什么时候调用这个方法

共有1个答案

翟修明
2023-03-14

这个方法由JVM根据System类中的注释调用。添加以下评论部分:

public final class System {

    /* register the natives via the static initializer.
     *
     * VM will invoke the initializeSystemClass method to complete
     * the initialization for this class separated from clinit.
     * Note that to use properties set by the VM, see the constraints
     * described in the initializeSystemClass method.
     */
    private static native void registerNatives();
    static {
        registerNatives();
    }

    /** Don't let anyone instantiate this class */
    private System() {
    }
 类似资料:
  • 问题内容: 我一直在寻找什么样的答案,并且是在Java。我搜索并找到了其他类似的答案: System是java.lang包中提供的一个内置类。该类具有最终修饰符,这意味着它不能被其他类继承。它包含预定义的方法和字段,提供标准输入,输出等功能。 out是System类中的静态最终字段(即变量),类型为PrintStream(内置类,包含用于打印不同数据值的方法)。静态字段和方法必须使用类名进行访问,

  • 问题内容: 块内初始化之间有什么区别: 以及单独的静态初始化: 问题答案: 静态初始化块允许更复杂的初始化,例如使用条件: 或者,当需要的不仅仅是构造时:使用构建器创建实例时,除了创建静态字段之外,还必须进行异常处理或其他工作。 静态初始化块也在内联静态初始化器之后运行,因此以下内容有效:

  • 问题内容: ava中的Double Brace初始化语法()是什么? 问题答案: 双括号初始化将创建一个从指定类(外部括号)派生的匿名类,并在该类(内部括号)内提供一个初始化程序块。例如 请注意,使用这种双重括号初始化的作用是创建匿名内部类。创建的类具有this指向周围外部类的隐式指针。尽管通常不是问题,但在某些情况下(例如序列化或垃圾收集时)可能会引起悲伤,值得一提的是。

  • 可能的重复: system.out.println在Java中是什么意思? 我正在寻找java中、和在中是什么的答案。我搜索了一下,找到了一个不同的答案: > System是java.lang包中的一个内置类。这个类有一个final修饰符,这意味着它不能被其他类继承。它包含预定义的方法和字段,提供标准输入、输出等功能。 此处表示类型PrintStream类的引用变量。 println()是Prin

  • 问题内容: 我们可以将代码放入构造函数或方法或初始化块中。初始化块有什么用?每个Java程序都必须有它吗? 问题答案: 首先,有两种类型的初始化块: 实例初始化块,以及 静态初始化块。 此代码应说明它们的用法以及执行顺序: 印刷品: 如果要运行某些代码而不管使用哪个构造函数,或者想要对匿名类进行一些实例初始化,则实例迭代块很有用。