对象创建过程
对象创建过程
?
假如创建类Hello的对象:
?
(1)当首次创建类型为Hello的对象或Hello类的静态方法/静态域首次被访问时,java解释器必须查找类路径,定位Hello.class.
(2)载入Hello.class(这将传经一个Class对象),有关静态初始化的所有动作都会执行。因此,静态初始化只在Class对象首次加载的时候进行一次。
(3)当用new Hello()创建对象的时候,首先将在堆上为Hello对象分配足够的存储空间
(4)这块存储空间会被清零,Hello对象的所有基本类型数据都设置为默认值,而引用被设置为null。
(5)执行所有出现于字段定义处的字段初始化动作
(6)执行构造器。
?
?
静态成员初始化
?
public class Think {public static void main(String ars[]){Cups.c.f(3);Cups.c.f(5);}}class Cup{void f(int m){System.out.println(m);}}class Cups{static Cup c;//静态子句,只执行一次,首次创建类型为Hello的对象或Hello类的静态方法/静态域首次被访问时static{c = new Cup();System.out.println("sdsds");}//构造函数未执行Cups(){System.out.println("构造CUPS");}}?
非静态实例初始化:使用new关键字
?
?
?
?
?
?