java 类变量和 init方法顺序
时间: 2023-06-27 18:02:46 浏览: 49
在Java类中,静态变量和静态初始化块会在类被加载时执行,而实例变量和实例初始化块则会在每次创建对象时执行。因此,类变量(即静态变量)和静态初始化块的顺序与它们在代码中出现的顺序相同,而实例变量和实例初始化块的顺序同样也与它们在代码中出现的顺序相同。
下面是一个示例代码,展示了类变量、静态初始化块、实例变量和实例初始化块的执行顺序:
```
public class MyClass {
// 类变量
public static int classVar = 1;
// 静态初始化块
static {
System.out.println("Static initialization block: " + classVar);
}
// 实例变量
public int instanceVar = 2;
// 实例初始化块
{
System.out.println("Instance initialization block: " + instanceVar);
}
// 构造方法
public MyClass() {
System.out.println("Constructor: " + instanceVar);
}
}
```
当创建 `MyClass` 的对象时,输出的顺序为:
```
Static initialization block: 1
Instance initialization block: 2
Constructor: 2
```
可以看到,类变量和静态初始化块先于实例变量和实例初始化块执行。而在实例初始化块和构造方法中,实例变量被初始化。