现有三个类:AA类,BB类,CC类。代码如下:
public class AA {// 此处为1
public static int a=10;//此处为2
public int b=20; //此处为6
public AA(){}; //此处为7
}
public class BB extends AA {//此处为3
public static int x=30;//此处为4
public int y=40; //此处为8
public 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的时候,所做的事或者是包含的操作。请各位详细解释下。
Java调试
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- weixin_42608382 2012-07-20 15:07关注
:D
你问的是Java类的加载顺序问题,比如先加载什么静态成员和静态初始化块、先父后子你都可以上在网上有介绍。你主要关心的是为什么会有从2跳到这里[code="java"]public class AA {[/code]// 此处为1。每个类在JVM虚拟机中都有一个指向这个类自身的Class对象。你能明白吗?就像你用类名.class时。。这个是一个指向这个类实例(自己)的静态变量。跳转到这里是在初始化这个静态变量。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥50 三种调度算法报错 有实例
- ¥15 关于#python#的问题,请各位专家解答!
- ¥200 询问:python实现大地主题正反算的程序设计,有偿
- ¥15 smptlib使用465端口发送邮件失败
- ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
- ¥15 对于squad数据集的基于bert模型的微调
- ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
- ¥20 steam下载游戏占用内存
- ¥15 CST保存项目时失败
- ¥20 java在应用程序里获取不到扬声器设备