《Thinking in Java》第四版笔记---类的加载和对象初始化

类加载的时机:第一次创建对象或者第一次使用该类的时候。解释一下,第一次创建对象是指通过关键字new一个对象;第一次使用则有很多种情况,例如第一次使用该类的static成员(变量/方法),或者子类第一次创建对象/加载时,也会触发加载器加载父类。

对象初始化指调用类的构造器时进行的操作。


类加载的顺序:

1、加载器会找到该类的.class文件然后载入;

2、如果发现该类有父类,再回到步骤1 继续加载父类(如果已经加载过则不会再次加载),以此类推直至“祖宗类”Object类;

3、加载完.class文件后,从Object类至该类的继承顺序开始static初始化(初始化static成员变量,执行static代码块)。

至此类就加载完毕了,值得注意的是:类的加载只会进行一次。


当类加载完毕之后,对象才能被创建以及初始化,其顺序是:

1、在该类的对象初始化之前,会先初始化其父类,以此类推直至Object类;

2、先初始化非static成员变量(static成员变量已经在类加载时初始化了),再调用构造器方法。

值得注意的是:步骤2 要参照步骤1 的说明


构造动作一经发生,那么对象所有部分的全体成员都会得到构建,然而在构造器内部,我们必须确保所要使用的成员都已经构建完毕。为了确保这一目的,唯一的办法就是首先调用基类构造器。(此句是《Thinking in Java》中的原话,基类即父类)。


验证类的加载和对象初始化顺序最简单的方法就是写段代码,执行看结果。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值