class   Card {   
  public   int   Num   =   1;   
  }   
    
  public   class   test {   
  public   static   void   main(String   args[]){   
  Card[]   cards   =   new   Card[21];   
  for(int i=0;i<20;i++)
  cards[i]   =   new   Card();   
  cards[0].Num   =   1;   
  for(int i=0;i<20;i++)
  System.out.printf("%d\n", cards[i].Num);
  }   
  }
以上代码我只给第1个对象的Num进行过赋值,其他的没有...可是打印出来后其他对象的Num也是1....怎么回事啊?哪里有错啊`?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【tommake】截止到2008-06-25 22:45:25的历史汇总数据(不包括此帖):
    发帖数:2                  发帖分:40                 
    结贴数:0                  结贴分:0                  
    未结数:2                  未结分:40                 
    结贴率:0.00  %            结分率:0.00  %            
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    public  int  Num  =  1;  因为这句你已经给它一个了
      

  3.   

    以上代码我只给第1个对象的Num进行过赋值,其他的没有...可是打印出来后其他对象的Num也是1....怎么回事啊?哪里有错啊`?------new的时候给的啊。class  Card { 
      public  int  Num  =  1; 
      } 你就是不给 第1个对象的Num进行赋值,所有的对象还是能输出1的。你44这个:
    class  Card { 
      public  int  Num  =  1; 
      } 
       
      public  class  test { 
      public  static  void  main(String  args[]){ 
      Card[]  cards  =  new  Card[21]; 
      for(int i=0;i <20;i++)
      cards[i]  =  new  Card(); 
      //cards[0].Num  =  1; 
      for(int i=0;i <20;i++)
      System.out.printf("%d\n", cards[i].Num);
      } 
      } 
      

  4.   

    public  int  Num  =  1;]
    这句调用的时候不就给每个对象的Num属性都赋值为1了吗?
    不清楚你的业务需求,也不知道你要做什么,但是这么赋值是绝对不对的
    你应该把属性值单独封装,根据传的参数来get到Num的值,这样调用20次的话才会彼此不同