Java-加载顺序(1)

++2016.7.17
++by side @Java-加载顺序(1)

==================================
关于Java-加载顺序

下面是一个面试题
/* 输出打印
*/

public class Z extends X {

Y y=new Y();

Z(){

    System.out.println("Z的构造方法");  
}
public static void main(String[] args) {
    
    new Z();
    
}

}
class X{
Y b=new Y();  
X(){
    System.out.println("X的构造方法"); 
}
}
class Y{
Y(){
    System.out.println("Y的构造方法");  
}

}
首先简单理解JVM加载的简单过程以本题为例
Java-加载顺序(1)_第1张图片
本题 加载过程
简单描述一下:

步骤:

  • 1.找到main()方法
  • 2.加载Z的父类X到内存X.class,然后加载PrintDemo到内存Z.class
  • 3.加载main()方法到栈
  • 4.执行main()方法里的new Z();
  • 5.执行Z父类X的构造方法,在此之前先加载X的成员Y b=new Y();
  • 6.加载Y到内存Y.class执行Y的构造方法 //打印 Y的构造方法
  • 7.再执行X的构造方法 //打印 X的构造方法
  • 8.再执行Z的构造方法,在此之前先加载Z的成员Y y=new Y(); 执行Y的构造方法 //打印 Y的构造方法
  • 9.打印 Z的构造方法
  • 10.结束
显示结果:
Java-加载顺序(1)_第2张图片
显示结果

==================================
@小怪兽

ps:因作者能力有限,有错误的地方请见谅

你可能感兴趣的:(Java-加载顺序(1))