遇到一个关于静态调用方面的问题!望高手提点提点。。。
以下是源程序,有点疑惑就是对其输出结果有点疑惑!! 
 class   Cup{ 
 	Cup(int   marker){ 
 		System.out.println( "Cup( "+marker+ ") "); 
 	} 
 	void   f(int   marker){ 
 		System.out.println( "f( "+marker+ ") "); 
 	} 
 } 
 class   Cups{ 
 	static   Cup   c1; 
 	static   Cup   c2; 
 	static{ 
 		c1=new   Cup(1); 
 		c2=new   Cup(2); 
 	} 
 	Cups(){ 
 		System.out.println( "Cups() "); 
 	} 
 } 
 public   class   ExplicitStatic   { 
 	public   static   void   main(String[]   args)   { 
                         System.out.println( "Inside   main() "); 
                         Cups.c1.f(99); 
 	}   
 } 
 上面程序的输出结果是: 
 Inside   main() 
 Cup(1) 
 Cup(2) 
 f(99) 
 为什么会出现Cup(2)?为什么在调用Cups的静态方法c1的时候会将c2也一起调用,如结果显示的那样,既然c2也被调用,那它的那个方法f()为什么不跟着一起调用呢?   
 以上是我这个小菜鸟提出的问题,希望高手提点提点。感激不尽。。
------解决方案--------------------Cups类加载的时候会先执行static块
------解决方案--------------------怎么都没有高手来回答一下啊,我刚看了,没看过这样的程序,也还没搞清楚啊。。郁闷啊。
------解决方案--------------------静态变量初始化的时候就会执行,找本书看看,更清楚
------解决方案--------------------new 是调用类的构造函数,c2=new Cup(2);这句话是实例话一个cup的对象,并不是调用这个类的所有方法......还是在看看书吧
------解决方案--------------------静态块static{ 
 c1=new Cup(1); 
 c2=new Cup(2); 
 } 
 会在该类被访问的时候被调用
------解决方案--------------------你在引用Cups类时,它就会执行static{ 
 c1=new Cup(1); 
 c2=new Cup(2); 
 } 
 里面的动作,他是类级别的,只要你使用了Cups类,static{ 
 c1=new Cup(1); 
 c2=new Cup(2); 
 }里面的肯定会被执行,并不会因为你没有调用就不执行,它是自动的;