类的加载过程,不求甚解即可(十)

来源:互联网 发布:soa软件架构 编辑:程序博客网 时间:2024/06/06 09:11
/**
 * jvm加载Class后,先收集static ,进行初始化(就1次)

 *主动引用,才会初始化

  被动引用,不会初始化

 */
public class LoadDemo01 {
public static void main(String[] args){
System.out.println("=====开始工作=====");
B b=new B();
System.out.println("main,id:"+B.id);
System.out.println("main,age:"+b.age);
//=================Class jvm就初始化一次
B b2=new B();
System.out.println("main,id:"+B.id);
System.out.println("main,age:"+b2.age);
}
}
class B extends A{
public static int id=10;
int age=0;
static {
System.out.println("1我在静态块中,age还没诞生,id:"+id);
id=20;
System.out.println("2我在静态块中,age还没诞生,id:"+id);
}
public B(){
System.out.println(super.xx+":==3开始构造对象=======age:"+age);
age=99;
System.out.println("4构造对象中,id::"+id);
id=30;
}
}
class A{
public int xx=0;
static {
System.out.println("1类加载先从,父类开始");
}
static {
System.out.println("2类加载先从,父类开始");
}
public A(){
xx=11;
System.out.println("对象构造,先从,父类开始");
}
}
0 0
原创粉丝点击