类的加载顺序

本文介绍了Java中类的静态代码块和构造方法的执行顺序。运行main方法时,先执行所在类的static代码块,创建对象时,先加载类的static代码块,若有父类,先执行父类静态代码块,再依次执行成员变量初始化、构造方法等。
public class TestStatic {
    Person person = new Person("Test");
    static{
        System.out.println("test static");
    }

    public TestStatic() {
        System.out.println("test constructor");
    }

    public static void main(String[] args) {
        new MyClass();
    }
}

class Person{
    static{
        System.out.println("person static");
    }
    public Person(String str) {
        System.out.println("person "+str);
    }
}


class MyClass extends TestStatic {
    Person person = new Person("MyClass");
    static{
        System.out.println("myclass static");
    }

    public MyClass() {
        System.out.println("myclass constructor");
    }
}

----------------------------------------------------------------------------------------------------

test static
myclass static
person static
person Test
test constructor
person MyClass
myclass constructor

1.运行main方法,首先执行main所在类TestStatic 的static代码块                                                                              test static

2.main中new MyClass()类,加载MyClass类,首先执行MyClass类的static代码块                                                   myclass static

3.MyClass类继承了TestStatic,所以要先加载父类静态代码块,因为TestStatic的static代码块已经被执行过了

4.然后再执TestStatic的成员变量,person = new Person("Test"),先加载Person类的静态代码块                             person static

5.然后加载Person类的构造方法new Person("Test"),                                                                                                person Test

6.再加载TestStatic自己的构造方法                                                                                                                         test constructor

6.然后初始化MyClass自己的成员变量 person=new Person("MyClass"),加载构造Person类的构造器                   person MyClass

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值