本帖最后由 余志强 于 2011-10-16 17:10 编辑
当我们调用一个javase命令 运行某个程序,该命令将启动一条java虚拟机进程,
1当程序主动使用某个类时,如果该类没有加载到内存中来,系统会通过加载,连接,初始化3隔步骤来对该类进行初始化,如果没有以外,JVM将会连接完成这三个步骤,所有有时也把这三个步骤统称为类的加载或者初始化;
2 当类被加载之后,系统为止生成一个对应的Class对象,接着会进入连接阶段,连接阶段会负责把类的二进制数据合并到JRE中;
3,类的初始化,在类的初始化阶段,虚拟机负责对类进行初始化,主要对静态属性进行初始化,在Java中对静态属性指定初始值有2种方式,①声明静态属性时指定初始值②使用静态代码块为静态属性指定初始值.如:
static int a;
static{
a=6;
}
4类的初始化时机:
当Java程序首次通过一下6中方式来使用某个接口或类时,系统就会初始化该类或者接口
①初创建类的实例,通过new 操作符
②调用某个类的静态方法
③访问某个类或者接口的静态属性,或者为该属性赋值
④通过反射方式来强制创建某个类或者接口对用的Class对象,
⑤初始化某个类的子类,当初始化某个类的子类时,程序会先初始化父类
⑥直接使用java.exe命令来运行某个主类时,程序会先初始化该主类;
疯狂java讲义说的很清楚,希望对你有帮助!!! |