java - 全局变量和构造函数(Java)

标签 java oop class variables

与构造函数相比,什么时候初始化类顶部的变量?

对不起,我是这个意思:

public class aClass {

    private int num;

    public aClass {...}

最佳答案

默认值(对象字段为null,原始字段为0等)在技术上从未明确分配就发出的字节码而言。 (这是在对象实例化期间“内部”完成的,在任何初始化程序/构造函数代码运行之前。)

在每个构造函数的开头“复制”实例字段的显式初始化代码,类中由编译器调用父类(super class)构造函数(如果有)之后。代码示例:

class Foo {
    int bar = 123;

    public Foo() {
        // ...
    }

    public Foo(int bar) {
        this.bar = bar;
        // ...
    }
}

被编译成字节码等同于:

class Foo {
    int bar;

    public Foo() {
        this.bar = 123;
        // ...
    }

    public Foo(int bar) {
        this.bar = 123;

        this.bar = bar;
        // ...
    }
}

初始化 block 也是如此。这意味着这些变量在任何普通构造函数代码执行之前得到初始化。

关于java - 全局变量和构造函数(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15328992/

相关文章:

javascript - Function、Array 和 Object 构造函数的 length 属性是什么?

java - 从 Class<A> 变量访问静态字段

java - 如何使用 ElGamal 加密/解密文本文件

java - 正则表达式检查包含 2 个或更多空格的字符串

perl - 新的 perl 对象覆盖先前对象的数据

c++ - 使用冒泡排序对类中的 2D Char 和 Int 数组进行排序?

c++ - 模板类继承的子类定义错误

java - NoClassDefFound错误: com/itextpdf/text/DocumentException when exporting jasper to pdf

java - 如何从 Java 程序中生成 Jar 文件

python - 如何使用类在列表中查找总和