public class ArrayCloneTest {
public static void main(String[] args) {
int [] i ={1,2,3};
MyClass mc1 = new MyClass(i);
MyClass mc2 = (MyClass)mc1.clone();
System.out.println(mc1.i[0] + "\n" + mc1.i[1]
+ "\n" + mc1.i[2]);
mc2.i[0]=3;
mc2.i[1]=2;
mc2.i[2]=1;
System.out.println(mc1.i[0] + "\n" + mc1.i[1]
+ "\n" + mc1.i[2]);
}
}class MyClass implements Cloneable{
int [] i;
MyClass(int [] i){
this.i = new int[i.length];
for(int x=0;x<i.length;x++){
this.i[x] = i[x];
}
}
public Object clone(){
Object mc=null;
try{
mc=(MyClass)super.clone();
}catch(CloneNotSupportedException e){
e.printStackTrace();
}
return mc;
}
}
由于数组也是引用所以也会导致拷贝之后拷贝对象和被拷贝对象的这个数组成员变量都指向同一块内存修改一个就会影响两个........请高手指点 拜托了
public static void main(String[] args) {
int [] i ={1,2,3};
MyClass mc1 = new MyClass(i);
MyClass mc2 = (MyClass)mc1.clone();
System.out.println(mc1.i[0] + "\n" + mc1.i[1]
+ "\n" + mc1.i[2]);
mc2.i[0]=3;
mc2.i[1]=2;
mc2.i[2]=1;
System.out.println(mc1.i[0] + "\n" + mc1.i[1]
+ "\n" + mc1.i[2]);
}
}class MyClass implements Cloneable{
int [] i;
MyClass(int [] i){
this.i = new int[i.length];
for(int x=0;x<i.length;x++){
this.i[x] = i[x];
}
}
public Object clone(){
Object mc=null;
try{
mc=(MyClass)super.clone();
}catch(CloneNotSupportedException e){
e.printStackTrace();
}
return mc;
}
}
由于数组也是引用所以也会导致拷贝之后拷贝对象和被拷贝对象的这个数组成员变量都指向同一块内存修改一个就会影响两个........请高手指点 拜托了
public static void main(String[] args) {
int [] i ={1,2,3};
MyClass mc1 = new MyClass(i);
MyClass mc2 = (MyClass)mc1.clone();
System.out.println(mc1.i[0] + "\n" + mc1.i[1]
+ "\n" + mc1.i[2]);
mc2.i[0]=3;
mc2.i[1]=2;
mc2.i[2]=1;System.out.println(mc1.i[0] + "\n" + mc1.i[1]
+ "\n" + mc1.i[2]);
}
}class MyClass implements Cloneable{
int [] i;MyClass(int [] i){
this.i = new int[i.length];
for(int x=0;x<i.length;x++){
this.i[x] = i[x];
}
}
public Object clone(){
MyClass mc=null;
try{
mc=(MyClass)super.clone();
}catch(CloneNotSupportedException e){
e.printStackTrace();
}
mc.i=(int[])i.clone();//这才是完成深拷贝的
return mc;
}
}