* 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("對象構造,先從,父類開始");
}
}