你为什么不用向量呢? Vector vt=new Vector();就可以作为对象数组了.具体见任意一本Java编程书.

解决方案 »

  1.   

    MyClass[] MyObj;
    MyObj = new MyClass[num];

    MyClass MyObj[];
    MyObj = new MyClass[num];
    都可以,只是你不能直接用MyObj[0].xxx=xxx;
    要这样: 
    MyClass a=new MyClass();
    MyObj[0]=a; 
    MyObj[0].xxx=xxx;(或a.xxx=xxx)    
      

  2.   

    ahfei, 谢谢你回答我的问题,   按你的说法,我试着先定义一个临时对象TempObj;
    然后定义一个对象数组,并循环取值,但后来发现数组所有成员
    都是相同的,这样就没意义了。有什么方法使他们不一样吗?   我的实现:   MyClass TempObj = new MyClass;
       MyClass ObjArr[] = new MyClass[5];   for (int i=0;i<5;i++)
       {
          TempObj.num = i;
          ObjArr[i] = TempObj;
       }ObjArr[0-4].num都是4;
    好像都只是指向了TempObj的地址,而不是取到它的值。顺便发发牢骚:Java是那个笨蛋发明的?在VC++里实现对象数组不知多方便!
      

  3.   

    您的牢骚发的太不对了,Java 是一种未来的语言,在没有搞清他之前,还是平心静气地学吧!
    您的问题是还没有彻底的清楚Java取消了指针而代之以引用,对象在使用之前必须给他分派一个引用,否则NULLPOINTEREXCEPTION即产生。对象的数组可以这样:
    yourClass ObjArray[]=new yourClass[num];
    ObjArray[0]=new yourClass(...the parameters of construct method);
    :
    :
    :Other objObjArray[0].attribute1=;
    :
    :
    other obj.attribs  or methods;
     至于您得到的对象属性值都相等,也正是由于引用的原因。您将TempObj 首先赋值予 ObjArr[0],又在i=1时赋值予ObjArr[1],如此下去,孰不知您已经将这个对象数组中的所有元素都变成了对TempObj的引用,当然,他们都相等了。
      

  4.   

    MyClass[] myClass = new MyClass[5];
    for (int i = 0; i < 5; i++)
    {
    myClass[i] = new MyClass();
    myClass[i].num = i;
    }
      

  5.   

    用jamesw的方法建立数组!
    如果数量不固定的话,就用Vector类,其象一个List类.
      

  6.   

    你的对象数组每个元素和temp都引用了同一个对象,那么当然是这个结果啦。