class Constructor
   {
      int x,y;
      Constructor()
       {
          x=5;
          y=7;
       }
      Constructor( int a )
       {
          x=a;
       }
      Constructor(int a,int b)
       {
          x=a;
          y=b;
       }
      void display()
       {
          System.out.println("x="+x +",y="+y);
       }      
   }
   class ConstMethod
   {
      public static void main(String args[])
       {
          Constructor exm1 = new Constructor();
          Constructor exm2 = new Constructor(6);//这里的输出是x=6,y=0;跟书上的结果不一样,为什么?
          Constructor exm3 = new Constructor(7,8);
          exm1.display();
          exm2.display();
          exm3.display();
       }
   }为什么y输出的不是7?

解决方案 »

  1.   

    Constructor exm2 = new Constructor(6);new Constructor(6)生成了新的对象,所以又把y设成了初始值
      

  2.   

    我运行后的输出结果:
    x=5,y=7
    x=6,y=0
    x=7,y=8
    没有任何不正常Constructor()是default构造函数
    Constructor( int a )和
    Constructor(int a,int b)
    覆写(overridding)了default函数
      

  3.   

    不知道这样讲对不对   
       Constructor()
           {
              x=5;
              y=7;
           }//这里的运行后就已经释放空间了
    所以下面那个构造函数里y=0;
    如果不对希望楼下来的给补充
    谢谢
      

  4.   

    第一问.Constructor exm2 = new Constructor(6);
    将x=6了.这里肯定应该是6..如果书上不是这样的。那肯定就是错的..除非改为:
      Constructor( int a )
           { int x=0;
             x=a;
           }
    这样x的值不会发生变化.因为这时的x为局部变量.
    第二问
    为什么y输出的不是7?
    Constructor exm3 = new Constructor(7,8);你这句将y付值为8了。。肯定y为8.不为7啊。。你把参数交换一下位置如Constructor exm3 = new Constructor(8,7);这时y才为7
      

  5.   

    把下面的构造函数修改一下 
    Constructor( int a )
           {
             x=a;
            System.out.println("cc");       }
    看看会有什么结果。
      

  6.   

    ================================================
    hailun(大海) ( ) 
     
       不知道这样讲对不对   
       Constructor()
           {
              x=5;
              y=7;
           }//这里的运行后就已经释放空间了
    所以下面那个构造函数里y=0;
    ================================================ 并不是已经释放空间了
    而是exm1,exm2,exm3是三个不同的对象
    他们之间暂时互不相干
    而对于未初始化的变量
    编译器会保证他的初始化
    所以exm2.y会被初始化为0
      

  7.   

    你预想怎么输出?static int i, j;
    也许可以满足需要.