static域被继承的后,子类和父类一起执行,这块代码只被执行一次。为什么?
 public   class   Test   { 
             public   static   void   main(String[]   args)   { 
                         A   a   =   new   B();//   标记1 
                         System.out.println( "============================= "); 
                         B   b   =   new   B(); 
             } 
 }   
 abstract   class   A   { 
             abstract   void   a();   
             static   { 
                         E   e   =   new   E(); 
             }   
             C   c   =   new   C();   
             public   A()   { 
                         System.out.println( "hello,this   is   a "); 
                         a();   
             } 
 }   
 class   B   extends   A   { 
             static   int   b   =   1;   
             C   c   =   new   C();   
             void   a()   { 
                         System.out.println(b); 
             }   
             public   B()   { 
                         System.out.println( "hello,this   is   b "); 
             }   
 }   
 class   C   { 
             public   C()   { 
                         System.out.println( "hello,this   is   c "); 
             } 
 }   
 class   E   { 
             public   E()   { 
                         System.out.println( "static   e "); 
             } 
 }   
 执行结果: 
 static   e 
 hello,this   is   c 
 hello,this   is   a 
 1 
 hello,this   is   c 
 hello,this   is   b 
 ============================= 
 hello,this   is   c 
 hello,this   is   a 
 1 
 hello,this   is   c 
 hello,this   is   b 
 将标记1处注释掉后,执行结果: 
 ============================= 
 static   e 
 hello,this   is   c 
 hello,this   is   a 
 1 
 hello,this   is   c 
 hello,this   is   b   
 static只能初始化一次么?
------解决方案--------------------当你第一次用到A这个类的时候类加载器会加载类A, 
 之后会对A进行类初始化,包括static域的初始化和static块的初始化 
 这时候 
  static { 
         E e = new E(); 
     } 
 会被执行. 
 当第二次在用到类A的时候,虚拟机发现A已经装载了,则不会再去装载它,所以之被执行了一次.   
 另外~有的程序,A类不再被使用,而变成不可触及状态,其对应的A.class有可能会被垃圾回收器收集.如果被收集了,再需要使用类A的时候还要再装载.