现有三个类:AA类,BB类,CC类。代码如下:public class AA {// 此处为1 public static int a=10;//此处为2public int b=20; //此处为6public AA(){}; //此处为7}public class BB extends AA {//此处为3 public static int x=30;//此处为4public int y=40; //此处为8public BB(){}; //此处为9}public class CC { public static void main(String[] args) {BB b=new BB();//此处为5}}在5那里设断点,按F5调试,执行顺序为:5→2→1→4→3→5→9→7→6→8→5 请问从2至1的原因?以及在执行1的时候,所做的事或者是包含的操作。请各位详细解释下。
3 回答
炎炎设计
TA贡献1808条经验 获得超4个赞
:D
你问的是Java类的加载顺序问题,比如先加载什么静态成员和静态初始化块、先父后子你都可以上在网上有介绍。你主要关心的是为什么会有从2跳到这里[code="java"]public class AA {[/code]// 此处为1。每个类在JVM虚拟机中都有一个指向这个类自身的Class对象。你能明白吗?就像你用类名.class时。。这个是一个指向这个类实例(自己)的静态变量。跳转到这里是在初始化这个静态变量。
杨__羊羊
TA贡献1943条经验 获得超7个赞
如果你认真看过tij4的话你会看到大概这样一段话,类级别的属性,方法是初始化最早加载的(我读的是英文版,翻译的不好),其次就是,类内部的静态块(有人称她为匿名构造方法),再次是对应的构造方法了.还有就是加载一个子类是要先加载父类。
添加回答
举报
0/150
提交
取消