对象创建过程
假如创建类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关键字