class a
{
  a(){
     System.out.print("1");
     }
  static{
    System.out.print("2");
     }
   {
     System.out.print("3");
    }
}
class b extends a{
   b(){
     System.out.print("4");
     }
  static{
    System.out.print("5");
     }
   {
     System.out.print("6");
    }
}
public class c
{
  public static void main(String args[])
           {
             System.out.print("0");
             new b();
           }
}
这个程序的结果是什么?请分析详细点好吗?

解决方案 »

  1.   

    输出结果是0253164,我只知道0应该先输出,然后执行静态部分,学习ing
      

  2.   

    你运行一下下面的代码,就会明白。class a
    {
      a(){
         System.out.print("1");
         }
      static{
        System.out.print("2");
         }
       {
         System.out.print("3");
        }
    }
    class b extends a{
       b(){
         System.out.print("4");
         }
      static{
        System.out.print("5");
         }
       {
         System.out.print("6");
        }
    }
    public class c
    {
      public static void main(String args[])
               {
                 System.out.print("0");
                 new b();
             System.out.print("---");
        new b();
               }
    }
      

  3.   

    构造函数会缺省调用父类的构造函数。static的静态块,只会在第一次new的时候执行。非静态的块,每次new都会被执行。
      

  4.   

    哎,这样的东西,自己写完代码,java一下,记住执行顺序,就可以了。
    构造函数后执行就后执行呗,管那么多干吗。sun就是真麽设计的。
    下面的代码,没有main函数不是也一样运行嘛。public class Helloworld 
    {
    static{
    System.out.println("Helloworld");
    System.exit(0);
    }
    }