Ok Let's see it step by step:0. public static void main(String[] args)
1. JVM 准备加载 class Beetle 由于他继承了 Insect 所以 class Insect 将先被加载
2. 分配所有 变量的空间 i j x1 x2 k 但是 并没有赋值(实际上赋了缺省值 i=0,j=0 ...)
3. 初始化 static 变量
4. 下面依次执行 main 里面的语句 prt("Beetle constructor");
5. Beetle b = new Beetle(); 调用到了 构造函数 Beetle() 这里要注意的是
在 Beetle() 里会先调用一个 super() 会逐级向上 直到 Object
6. 于是执行 构造函数 Insect() 但在执行其内部语句之前 会先初始化 实例变量(i=9 j=0)
7. prt("i = " + i + ", j = " + j);
8. j = 39;
9. 回到构造函数 Beetle() 初始化 实例变量 k=prt("Beetle.k initialized");//(k = 47)
10.最后 prt("k = " + k);prt("j = " + j);> 还有 K是怎么被赋的47
因为在 int prt(String s) 里 有一个 return 47; 当函数完成后 就把这个 47 返回给了 k
1. JVM 准备加载 class Beetle 由于他继承了 Insect 所以 class Insect 将先被加载
2. 分配所有 变量的空间 i j x1 x2 k 但是 并没有赋值(实际上赋了缺省值 i=0,j=0 ...)
3. 初始化 static 变量
4. 下面依次执行 main 里面的语句 prt("Beetle constructor");
5. Beetle b = new Beetle(); 调用到了 构造函数 Beetle() 这里要注意的是
在 Beetle() 里会先调用一个 super() 会逐级向上 直到 Object
6. 于是执行 构造函数 Insect() 但在执行其内部语句之前 会先初始化 实例变量(i=9 j=0)
7. prt("i = " + i + ", j = " + j);
8. j = 39;
9. 回到构造函数 Beetle() 初始化 实例变量 k=prt("Beetle.k initialized");//(k = 47)
10.最后 prt("k = " + k);prt("j = " + j);> 还有 K是怎么被赋的47
因为在 int prt(String s) 里 有一个 return 47; 当函数完成后 就把这个 47 返回给了 k
解决方案 »
- 请问如何将MySQL数据库的驱动程序加入自己的jar文件中?
- 使用jstl的out标签出错的问题
- 如何将图片生成到ImageBuffer里
- 面向对象的不足之处
- 求助..RTTI的一个问题..谢谢
- 请问,使用文本组件JTextArea的时候,能否获得当前光标所在的位置信息?
- rmi存根问题
- applet连接数据库问题,sos!!!!!(有请各位大虾)
- URL怎么写?局域网的数据库服务器:yy,port是:1433,数据库是:fyb,user是:usr,password是:sql,用jdbc-odbc 驱动。
- MyEclipse配置问题:Server不见了
- 高手哪里去了?分不够再加!!!
- javax.servlet.http 包存于jdk中哪个jar文件?
static Insect.x1 initialized static Beetle.x2 initialized为什么先输出
3. 初始化 static 变量 的时候
static int x1 = prt("static Insect.x1 initialized");
static int x2 = prt("static Beetle.x2 initialized");
用到了 你自己定义的 prt 函数 (在 class Insect 中定义的)这时 static Insect.x1 initialized ,static Beetle.x2 initialized 就被输出了
而其他的输出要到后面的步骤中才行