java 谁能解释一下这段程序是如何运行的 还有static在里面的作用?

来源:百度知道 编辑:UC知道 时间:2024/06/04 09:54:04
public class ExplicitStatic{
public static void main(String[] args){
System.out.println("Inside main()");
Cups.c1.f(99);
}
static Cups x=new Cups();
static Cups y=new Cups();
}
class Cup{
Cup(int marker){
System.out.println("Cup("+marker+")");
}
void f(int marker){
System.out.println("f("+marker+")");
}
}
class Cups{
static Cup c1=new Cup(11);
static Cup c2;
Cup c3=new Cup(33);
Cup c4;
{ c3=new Cup(3);
c4=new Cup(4);
}
static{
c1=new Cup(1);
c2=new Cup(2);
}
Cups(){
System.out.println("Cups()");
}
}

这代码真。。。
首先ExplicitStatic的静态变量x,y用到Cups类,于是先初始化Cups的静态成员。首先执行static Cup c1 = new Cup(11);顺便打印Cup(11),然后分别执行c1 = new Cup(1);c2 = new Cup(2);打印Cup(1)和Cup(2)。然后才初始化x的非静态成员,分别执行Cup c3 = new Cup(33);c3 = new Cup(3);c4 = new Cup(4);分别打印Cup(33),Cup(3),Cup(4),最后执行构造函数,打印Cups()。同样的4句话也会在y的构造过程中打印一遍。这时候静态成员x,y都构造完毕,开始执行main的第一句语句,打印Inside main()。最后调用c1.f(99),打印f(99)。

不明白你说的static的作用是指什么。。因为这个代码没任何实际意义,只是纯粹搞搞脑子。。