class Class1
    {
        private static int count = 0;
        static Class1()
        {
            count++;
        }
        public Class1()
        {
            count++;
        }
    }            Class1 o1 = new Class1();
            Class1 o2 = new Class1();我不明白static Class1()和 public Class1()用意和他们的执行过程,结果count=3,是怎么得出来的?

解决方案 »

  1.   

    在执行前就是1了
    Class1   o1   =   new   Class1(); 
    Class1   o2   =   new   Class1(); 
      

  2.   

    为什么在 “Class1   o1   =   new   Class1(); ”时先调用 “static   Class1()” ,后调用“public   Class1() ”,而在“ Class1   o2   =   new   Class1(); ” 时只调用“public   Class1() ”?
      

  3.   

    static       Class1() 不是在Class1       o1       =       new       Class1();   调用的把
      

  4.   

     static   Class1()        
    {                  
       count++;          

    这是一个静态构造函数,它只在类第一次被加载时(第一次new的时候),执行一次,注意只执行一次.
    一般用于配置应用程序的运行环境。这是count变成1,
    Class1       o1       =       new       Class1();   
    Class1       o2       =       new       Class1();   上面两条语句执行了下面这条语句二次:public   Class1() 

         count++; 

    结果就是3了,以上只是个人的意见,如有不对之处,请指教!谢谢!
      

  5.   

    第一个是静态函数,在第一次使用时被执行且执行一次
    第二个是非静态的,在实例化后才执行。
    当  static       Class1()                 
    {                                     
          count++;                     
    }  时,已经被执行,count==1;
    后面两次都是实例化
    public   Class1() 
             {  
                count++; 
             } 
    这个
    就是说count++被执行了两次,所以是count==3了
      

  6.   


    class Class1
    {
    private static int count = 0;     // 静态构造函数用于初始化静态变量,只运行一次
    // 什么时候?在第一次使用该类并在实例化对象之前
         static Class1()
         {
    count++;
    }
    // 实例构造函数用于初始化实例变量
    public Class1()
    {
    count++;
    }