这个结果是用java 解释后看到的结果,怎么会是这个顺序???
解决方案 »
- 怎么配置JAVA环境变量
- 大家晒下java开发代码的小技巧啊![整理贴]
- 请Unix高手给看看?
- 关于这句话的理解,有关多线程的interrupt
- JComboBox、JTable刷新的问题
- 我的applet中的线程为什么不能正确运行,请大家来看看,帮帮我!
- Hello.class 类文件名后带个Class是什么意思(在线)
- Note: Recompile with -deprecation for details.什么意思
- 在 applet 初始化的时候连接数据库,但是在JBuilder 中可以连接到,在打开网页的时候不行。为什么??
- Java内部接口疑问
- 高手请进,数字滚动摇奖 实现
- 请问微软最新的IE6支持JAVA吗?
static Cups y = new Cups();上面这两句是在main前执行的,这样就清楚了吧。<------ 树欲静而风不止 ------>
x,y也没有调用cup(int er) 呀
<------ 仁者见仁,智者见智------>
<------ 仁者见仁,智者见智------>
上面的执行顺序是
1: static Cups x=new Cups(); 转入 Cups对象
2: static Cup c1=new Cup(11); 转入 Cup对象
3: 执行Cup的输出 Cup(11);
4: cups对象里的 static Cup c2;
5: static{
c1=new Cup(1);转入Cup对象 输出 Cup(1)
c2=new Cup(2);转入Cup对象 输出 Cup(2)
}
6: cups对象里的 Cup c3=new Cup(33); 输出 Cup(33)
7:c3=new Cup(3); 输出 Cup(3)
c4=new Cup(4); 输出 Cup(4)
8:Cups(){
System.out.println("Cups()"); 输出 Cups()
}
9:static Cups y=new Cups();
注意Cups里的static成员已经初始化 所以 static Cup c1=new Cup(11);
static Cup c2;static{
c1=new Cup(1);
c2=new Cup(2);
}
不在执行!
下面的就和上面一样了!
程序首先执行:static Cups x=new Cups();这行,因为在主函数里有三个static标识,分别是x,y,main。按规定,含static标识的优先执行,而变量比函数优先执行,因此顺序是先执行x,y,main.
x初始化,会自动调用cups类,而在cups中也存在三个static的标识,因此依顺序执行
先执行static Cup c1=new Cup(11);初始化cup类,因而调用cup的构造函数,产生输出:cup(11)
然后执行static Cup c2;因为只是声明,并没有初始化,所以不输出
再次执行 static{
c1=new Cup(1);
c2=new Cup(2);
}如上所述产生输出cup(1),cup(2)
下面再执行Cup c3=new Cup(33);输出 cup(33)
然后执行 Cup c4;
{ c3=new Cup(3);
c4=new Cup(4);
}输出cup(3),cup(4)
接着再执行cup的构造函数,输出cup()
下面再执行 static Cups y=new Cups();
因为static声明的东西只执行一次就不再执行,因此下面的就不执行cups中标识的static的内容了
Cup c3=new Cup(33);输出cup(33);
Cup c4;
{ c3=new Cup(3);
c4=new Cup(4);
}输出cup(3),cup(4),执行构造函数输出cup();然后再执行main主函数,输出f(99)
<------ 仁者见仁,智者见智------>