public static void main(String[] args) {
        // TODO code application logic here
        int[] sec = {1,2,3,4};
        int[] b = new int[4];
        Vector a = new Vector();
        a.addElement(sec);
        sec[0] = 10;
        sec[1] = 20;
        sec[2] = 30;
        sec[3] = 40;
        a.insertElementAt(sec,0);
        for (int i = 0; i < a.size(); i++ ){
            b = (int[])a.elementAt(i);
            for(int j = 0 ;j < 4; j++){
                System.out.println(""+b[j]);
            }
            System.out.println("\r\n==================");
        }
        a.removeAllElements();
        a.clear();        
    }為什麼輸出的是
10
20
30
40
===========
10
20
30
40
===========
而不是
1
2
3
4
=======
10
20
30
40
呢???怎樣做才能實現呢?謝謝 ̄!

解决方案 »

  1.   

    import java.util.Vector;
    import java.util.Emumeration;
    public class Avector{
    public static void main(String args[])
    {
    0. Vector v=new Vector(); 
    1. v.addElement("one"); 
    2. addElement("two");
    3. v.addElement("three"); 
    4. v.insertElementAt("zero",0);
    5. v.insertElementAt("oop",3);
    6. v.setElementAt("three",3);
    7. v.setElementAt("four",4);
    8. v.removeAllElements();
    }
    }
    Vector中的变化情况又是怎樣呢?
    謝謝 ̄!
      

  2.   

    呵呵,其实java里的reference有点类似于指针的,你把sec加到a中,那么a就有一个指向sec的reference了,所以你更变sec的内容了,打印出来的结果当然也变了注:java里除了primary(int, long, double....)类型不是这样,其他都是这样子的
      

  3.   

    sec[0] = 10;
            sec[1] = 20;
            sec[2] = 30;
            sec[3] = 40;
    sec是同一个object的引用,他值已经变了,打印的当然一样了下面那个就是01234
      

  4.   

    Vector 里面存放的是对象的引用,而不是对象的copy.public static void main(String[] args) {
            // TODO code application logic here
            int[] sec = {1,2,3,4};
            int[] b = new int[4];
            Vector a = new Vector();
            a.addElement(sec);
            sec=new int[4];
            sec[0] = 10;
            sec[1] = 20;
            sec[2] = 30;
            sec[3] = 40;
            a.insertElementAt(sec,0);
            for (int i = 0; i < a.size(); i++ ){
                b = (int[])a.elementAt(i);
                for(int j = 0 ;j < 4; j++){
                    System.out.println(""+b[j]);
                }
                System.out.println("\r\n==================");
            }
            a.removeAllElements();
            a.clear();        
        }
      

  5.   

    你可以这样
    a.addElement(new int[]{1,2,3,4});
    a.insertElementAt(sec,0);
      

  6.   

    a.addElement(sec);a.insertElementAt(sec,0);注意你这两句,首先把数组加入到vector, 下面再次插入数组sec, 但你的起点是0,这样正好把上次的内容给覆盖了,应该为:
    int size = a.size();
    a.insertElement(sec,size - 1);
      

  7.   

    int[]是对象,
    Vector a = new Vector();
    a.addElement(sec);
    只是把sec的引用加到了Vector中,
    所以外面的sec和Vector里的是指向的同一块内存空间,改外面的也就改了里面的。
      

  8.   

    数组在java里面的使用和c里面的指针差不多。。你修改了sec[n]里面的数据。。也就是Vector里面的项指向德内存块的内容也变化了。。当然是得到你的结果了咯
    最好用2个sec1[],sec2[]int sec[] = new int[10];
    int sec1[] = (int[]) sec.clone();
    然后修改sec1[]然后+到Vector里面
      

  9.   

    sec是同一个object的引用,他值已经变了,打印的当然一样了