Joh*_*ohn 1 java oop variables class
类的顶部变量何时与构造函数进行初始化?
对不起,这就是我的意思:
public class aClass {
private int num;
public aClass {...}
Run Code Online (Sandbox Code Playgroud)
默认值(null对于0原始字段的对象字段等)在技术上从未明确分配,只要涉及发出的字节码.(这是在对象实例化期间"内部"完成的,在任何初始化程序/构造函数代码运行之前.)
在编译器对类中的超类构造函数调用(如果有的话)之后,在每个构造函数的开头"复制"实例字段的显式初始化代码.代码示例:
class Foo {
int bar = 123;
public Foo() {
// ...
}
public Foo(int bar) {
this.bar = bar;
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
被编译成等效于的字节码:
class Foo {
int bar;
public Foo() {
this.bar = 123;
// ...
}
public Foo(int bar) {
this.bar = 123;
this.bar = bar;
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
初始化程序块也是如此.这意味着在执行任何普通构造函数代码之前,这些变量都会被初始化