static 有这么麻烦吗?(已解决)
class Explicit{Test3 a=new Test3();//这里怎么会比构造函数先执行,还有这一句也没有在main()里怎么就可以被执行了呢
//这里是不是被默认成static语句了啊
Explicit(){
System.out.println("Explicit");
}
}
class Test3{
Test3(){
System.out.println("Test3");
}
}
class Test{
public static void main(String[] args){
Explicit e=new Explicit();
}
}
[[it] 本帖最后由 he20041987 于 2008-4-15 11:58 编辑 [/it]]
----------------解决方案--------------------------------------------------------
public class a {
int i = 0;
public a() {
i++;
System.out.println("" + i);
}
public static void main(String []args) {
new a();
}
}
成员变量也是先执行的...........
如果不是从成员变量执行的话,会出现异常
----------------解决方案--------------------------------------------------------
哦那么说java是先执行static语句块,再执行成员变量,最后才执行main().
----------------解决方案--------------------------------------------------------
class Explicit{
static Test3 b=new Test3();
Explicit(){
System.out.println("Explicit");
}
Test3 a=new Test3();
}
class Test3{
Test3(){
System.out.println("Test31");
}
public String toString()
{
return getClass().getName();
}
}
class Test{
public static void main(String[] args){
Explicit e=new Explicit();
System.out.println(Explicit.b);
}
}
----------------解决方案--------------------------------------------------------
可以这样看建立对象的前提,就是把对象中可能要建立的都建好,在建立对象自己,不用关键字定义的都不是静态得..
----------------解决方案--------------------------------------------------------
差不多了解了,谢谢两位了!
----------------解决方案--------------------------------------------------------
正确的顺序是
执行静态初始化(包括static块)
字段默认初始化
字段初始化
构造器
----------------解决方案--------------------------------------------------------