/**
* 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("对象构造,先从,父类开始");
}
}
* 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("对象构造,先从,父类开始");
}
}