返回
Java类中成员变量的初始化顺序
后端
2023-11-23 19:46:31
Java类中成员变量的初始化顺序
在Java中,类中的成员变量在创建对象时会自动初始化。成员变量的初始化顺序与变量的类型、作用域和是否为静态变量有关。
基本类型和引用类型的初始化顺序
基本类型变量在创建对象时会自动初始化为默认值。默认值对于数字类型(如int、long、double等)为0,对于布尔类型为false,对于char类型为'\u0000'。
引用类型变量在创建对象时会自动初始化为null。
静态变量和实例变量的初始化顺序
静态变量在类加载时初始化,而实例变量在创建对象时初始化。
静态变量的初始化顺序与变量的声明顺序无关。所有静态变量都会在类加载时初始化,无论它们是否被使用。
实例变量的初始化顺序与变量的声明顺序有关。实例变量会在创建对象时按声明顺序初始化。
继承关系中成员变量的初始化顺序
如果类中存在继承关系,则导出类的成员变量会在基类的成员变量之后初始化。
例如,如果类Son继承类Father,则类Son中的成员变量会在类Father中的成员变量之后初始化。
代码示例
以下代码示例展示了Java类中成员变量的初始化顺序:
public class Father {
private int a;
private int b;
public Father() {
System.out.println("Father constructor called");
System.out.println("a = " + a);
System.out.println("b = " + b);
}
}
public class Son extends Father {
private int c;
private int d;
public Son() {
System.out.println("Son constructor called");
System.out.println("c = " + c);
System.out.println("d = " + d);
}
public static void main(String[] args) {
Son son = new Son();
}
}
输出结果如下:
Father constructor called
a = 0
b = 0
Son constructor called
c = 0
d = 0
从结果可以看出,类中成员变量的初始化顺序是:
- 基本类型变量在创建对象时会自动初始化为默认值。
- 引用类型变量在创建对象时会自动初始化为null。
- 静态变量在类加载时初始化。
- 实例变量在创建对象时按声明顺序初始化。
- 如果类中存在继承关系,则导出类的成员变量会在基类的成员变量之后初始化。