当我们执行className object = new ClassName()时候代码执行的顺序为何?
一、非继承状态下
1.无静态变量
1.1——
public class OrderTest {
public OrderTest(){
System.out.println("构造器被调用");
}
private int num = init();
{
System.out.println("代码块被调用");
}
private int init() {
System.out.println("变量赋值");
return 5;
}
public static void main(String[] args) {
new OrderTest();
}
}
打印结果——:
变量赋值
代码块被调用
构造器被调用
1.2 将构造代码块与变量定义交换位置——
public OrderTest(){
System.out.println("构造器被调用");
}
{
num = 6;
System.out.println("代码块被调用");
}
private int num = init();
private int init() {
System.out.println("变量赋值");
return 5;
}
public static void main(String[] args) {
new OrderTe

本文详细探讨了Java中非继承状态和继承情况下的初始化语句执行顺序,包括静态变量、成员变量、静态块和构造器的执行时机。总结了在不同场景下,静态成员、非静态成员的初始化顺序以及类加载过程对初始化的影响。
最低0.47元/天 解锁文章
672





