对象初始化次序
对象初始化次序
1)??? 所有变量一定会在任何一个函数(甚至是构造函数)被调用之前完成初始化(见P233例子)
2)??? 在产生一个class的对象(包含static成员的class的代码被装载)时,首先自动初始化class中的static成员变量,再执行所有出现于static数据定义处的初始化动作,最后执行static block,所有这些初始化操作只在第一次生成该对象时进行。
3)??? 自动初始化class中的其它成员变量。
4)??? 执行所有出现于数据定义处的初始化动作。如:int i=1;的执行顺序是先把I自动初始化为0,再执行数据定义处的初始化动作,初始化为1。
5)??? 执行non-static block
6)??? 调用构造函数。
?
例:
?
结果:
Cup(11)Cup(1)Cup(2)Cup(33)Cup(3)Cup(4)Cups()Cup(33)Cup(3)Cup(4)Cups()Inside main()f(99)?
来自网络文件: Java编程思想读书笔记