Vector a = new Vector(); Vector b = (Vector)a.clone();
to huangdeji(活着就是等死) : 您说的方法我已经试过了,一样是引用。
Vector a = new Vector(); a.add("111"); a.add("222"); Vector b = (Vector)a.clone(); b.add("333"); System.err.println("a = " + a.size()); System.err.println("b = " + b.size());输出结果为: a = 2 b = 3
Vector a = new Vector(); a.add("111"); a.add("222"); Vector b = (Vector)a.clone(); b.add("333"); b.set(0,"555"); for(int i = 0;i < a.size();i++){ System.err.println("a " + i + " = " +(String)a.get(i)); } for(int i = 0;i < b.size();i++){ System.err.println("b " + i + " = " +(String)b.get(i)); } System.err.println("a = " + a.size()); System.err.println("b = " + b.size()); 输出结果为: a 0 = 111 a 1 = 222 b 0 = 555 b 1 = 222 b 2 = 333 a = 2 b = 3
to huangdeji(活着就是等死) : 您说的方法我已经试过了,一样是引用。为什么我运行正常呢?
直接一个个add加入对象,就会拷贝对象
to huangdeji(活着就是等死): b = (Vector)a.clone(); 之后,不是说b是a的引用,而是说b[i]是a[i]的引用,改变b[i]的内容a[i]的内容也会改变。 您试一下如下的程序:public class test{ public int id; public test(int n){ id = n; } } Vector a = new Vector(); Vector b = new Vector(); for( int i = 0; i < 3; i++) { a.add(new test(i + 1)); } b = (Vector)a.clone(); for ( int i = 0; i < 3; i++) { ((test)b.elementAt(i)).id += 10; } for (int i = 0; i < a.size(); i++) { System.out.println("a[" + i + "] = " + ((test)a.elementAt(i)).id); System.out.println("b[" + i + "] = " + ((test)b.elementAt(i)).id); } 输出结果: a[0] = 11 b[0] = 11 a[1] = 12 b[1] = 12 a[2] = 13 b[2] = 13
Vector b = (Vector)a.clone();
您说的方法我已经试过了,一样是引用。
a.add("111");
a.add("222");
Vector b = (Vector)a.clone();
b.add("333");
System.err.println("a = " + a.size());
System.err.println("b = " + b.size());输出结果为:
a = 2
b = 3
a.add("111");
a.add("222");
Vector b = (Vector)a.clone();
b.add("333");
b.set(0,"555");
for(int i = 0;i < a.size();i++){
System.err.println("a " + i + " = " +(String)a.get(i));
}
for(int i = 0;i < b.size();i++){
System.err.println("b " + i + " = " +(String)b.get(i));
}
System.err.println("a = " + a.size());
System.err.println("b = " + b.size());
输出结果为:
a 0 = 111
a 1 = 222
b 0 = 555
b 1 = 222
b 2 = 333
a = 2
b = 3
您说的方法我已经试过了,一样是引用。为什么我运行正常呢?
b = (Vector)a.clone();
之后,不是说b是a的引用,而是说b[i]是a[i]的引用,改变b[i]的内容a[i]的内容也会改变。
您试一下如下的程序:public class test{
public int id;
public test(int n){
id = n;
}
} Vector a = new Vector();
Vector b = new Vector();
for( int i = 0; i < 3; i++) {
a.add(new test(i + 1));
}
b = (Vector)a.clone();
for ( int i = 0; i < 3; i++) {
((test)b.elementAt(i)).id += 10;
}
for (int i = 0; i < a.size(); i++) {
System.out.println("a[" + i + "] = " + ((test)a.elementAt(i)).id);
System.out.println("b[" + i + "] = " + ((test)b.elementAt(i)).id);
}
输出结果:
a[0] = 11
b[0] = 11
a[1] = 12
b[1] = 12
a[2] = 13
b[2] = 13