
java程序 有木有人可以解释一下为什么结果是 2,3,1,2,1,2
classBowl{Bowl(intmarker){System.out.println(marker);}voidf1(intmarker){System.out.pr...
class Bowl{
Bowl(int marker){System.out.println(marker);
}
void f1(int marker){System.out.println(marker);
}
}
class Cupboard{
Bowl bowl1=new Bowl(1);
static Bowl bowl2=new Bowl(2);
Cupboard(){bowl2.f1(2);
}
void f2(int marker){System.out.println(marker);
}
static Bowl bowl3=new Bowl(3);
}
public class Hello {
static Cupboard cupboard=new Cupboard();
public static void main(String[] args) {
// TODO Auto-generated method stub
new Cupboard();
}
} 展开
Bowl(int marker){System.out.println(marker);
}
void f1(int marker){System.out.println(marker);
}
}
class Cupboard{
Bowl bowl1=new Bowl(1);
static Bowl bowl2=new Bowl(2);
Cupboard(){bowl2.f1(2);
}
void f2(int marker){System.out.println(marker);
}
static Bowl bowl3=new Bowl(3);
}
public class Hello {
static Cupboard cupboard=new Cupboard();
public static void main(String[] args) {
// TODO Auto-generated method stub
new Cupboard();
}
} 展开
2个回答
展开全部
程序的入口是main函数,首先加载Hello这个类,完成Hello的初始化。所以先执行的是这个:
static Cupboard cupboard=new Cupboard();
执行这句就需要加载Cupboard这个类,完成它的初始化。初始化的顺序是先静态变量。
static Bowl bowl2=new Bowl(2);
static Bowl bowl3=new Bowl(3);
所以输出结果是:2 3
紧接着完成普通成员变量的初始化
Bowl bowl1=new Bowl(1);
输出: 1
接着调用构造方法:
Cupboard(){
bowl2.f1(2);
}
输出: 2
一切都初始化完成后,执行main函数。
new Cupboard();
仍需要初始化成员变量以及调用一次构造函数
Bowl bowl1=new Bowl(1);
Cupboard(){
bowl2.f1(2);
}
所以输出: 1 2
最终结果就是: 2,3,1,2,1,2
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询