faint!
v[0] == a, v[1]==a, v[2]==a
they are the same.

解决方案 »

  1.   

    虽然是向量中是同一对象a但每个a.head的不一样,所以向量入栈时的a.head的也不一样。可是为什么先入栈的的a.head的值和后入栈的a.head的值相等。
      

  2.   

    我把同一个对象a放入向量中,每个a的a.head不同。打印时先打印第一个a.head,再打印最后一个a.head
    为什么打印出的第一个和最后一个的a.head一样呢?
      

  3.   

    你放入的其实是a的引用,所以你在任何地方改了a的head值,vector中所有
    a引用所指向对象的head值就都一样改变为新值。
    把new MyArray一句放循环里边就可以了。
      

  4.   

    你在for之前就声明了对象
    Myarray a=new Myarray();
    所以,你三次把它加入到vector中的时候,实际上是修改a.head,但是你只声明了一个a,所以只有你个a.head。后两次实际上是修改a.head的值。
    在vector中存放是实际上是对象的句柄,所以三个元素,实际上指的是一个对象。
      

  5.   

    你三次加入的a引用的是同一个对象,这样试试:
    .....
    Myarray[3] a=new Marray[3];for(int i=0;i<3;i++){
       Marray[i]=new Mayrray();
       a[i].n="111";a[i].head=i;
    ....