为什么有的时候像下面的会执行。什么时候不会执行? 请教? 谢谢,急!  谢谢 !急
class   C 
 { 
 	C() 
 	{ 
 		System.out.print( "C "); 
 	} 
 }   
 class   A    
 { 
                      C   c   =   new   C();//这里print   a   string    "C "               why???? 
 	A()    
 	{ 
 		this( "A ");    
 		System.out.print( "A ");    
 	}   
                         A(String   s)    
 	{ 
 	   	System.out.print(s);    
 	} 
 }   
 class   sadf   extends   A    
 {   
                         sadf()    
 	{    
 		super( "B ");    
 		System.out.print( "B ");    
 	}   
                         public   static   void   main(String[]   args)    
 	{ 
                                                 new   sadf(); 
                         }   
 } 
 打印结果是CBB,   为什么会打印C; 
 class   A    
 { 
                      C   c   =   new   C();//这里print   a   string    "C "               why????     
 而下面的一个却不打印   
 class   C 
 { 
 	C() 
 	{ 
 		System.out.print( "C "); 
 	} 
 }   
 public   class   NewClass   { 
          C   dd   =   new   C();   //不打印出      C   来; 
                      //但是将这句改为   static      C   dd   =   new   C();      会打印出   C   来。 
                                                                      //为什么呀? 
    public   static   void   main(String   args[]){      } 
 }   
    我知道static是一个类成员,可以在   构造器运行之前运行,         
             我就是不知道什么时候像上面的会执行。什么时候不会执行?      可以帮我举一些例子说明一下吗?   
                      谢谢!!!!!!!!!!!     
------解决方案--------------------第二个没有输出是因为没有new出对象,当然就没有输出了
------解决方案--------------------构造顺序->  
 请求类的时候,static的成员初始化执行,然后是static{}块执行。 
 调用构造函数的时候,因为先引用了类,所以先进行静态部分的初始化,然后进行下面步骤: 
 非静态成员初始化执行,然后是构造函数执行。   
 在类中声明非静态成员变量C dd = new C(),这里的new操作在调用构造函数的时候、构造函数执行体调用之前执行。也就是说,你需要调用new NewClass()(在这里是默认构造函数,因为你没有声明构造函数:-|),才能对这个dd进行初始化——如果没有new C(),初始化为null;有了new C(),初始化为C()。最后才是对NewClass()的调用。   
 啰唆了一点,明白了没有?关键是初始化顺序。