Open hz90 opened 5 years ago
class student{ public int age; public Date date; public student (int age,Date date){ this.age=age; this.date=date; } }
浅copy(复制值,基本类型数值,引用类型引用地址) a1:基本类型(成员变量c1)引用类型(成员变量c2) 浅copy a2(新对象) :基本类型(成员变量c1)引用类型(成员变量c2,和a1引用相同) student代码{ //重写clone方法 public object clone(){ super.clone(); } }
代码{ student s1=new student(12,new Object()); //java clone方法就是浅复制 student s2=s1.clone(); } s1==s2;//false s1.equals(s2);//false s1.date==s2.date;//true s1.date.equals(s2.date);//true
深copy(引用是复制一个新的) a1:基本类型(成员变量c1)引用类型(成员变量c2) 深copy a2(新对象) :基本类型(成员变量c1)引用类型(成员变量c2,对a1的成员变量也进行copy) student代码{ //重写clone方法 public object clone(){ student s=super.clone(); s.date=this.date.clone(); return s; } } 代码{ s1==s2;//false s1.equals(s2);//false s1.obj==s2.obj;//true s1.obj.equals(s2.obj);//true } java.util.Date://实现了Cloneable;
如果想让复制以后对象相比较的话,重写equals就可以
class student{ public int age; public Date date; public student (int age,Date date){ this.age=age; this.date=date; } }
浅copy(复制值,基本类型数值,引用类型引用地址) a1:基本类型(成员变量c1)引用类型(成员变量c2) 浅copy a2(新对象) :基本类型(成员变量c1)引用类型(成员变量c2,和a1引用相同) student代码{ //重写clone方法 public object clone(){ super.clone(); } }
代码{ student s1=new student(12,new Object()); //java clone方法就是浅复制 student s2=s1.clone(); } s1==s2;//false s1.equals(s2);//false s1.date==s2.date;//true s1.date.equals(s2.date);//true
深copy(引用是复制一个新的) a1:基本类型(成员变量c1)引用类型(成员变量c2) 深copy a2(新对象) :基本类型(成员变量c1)引用类型(成员变量c2,对a1的成员变量也进行copy) student代码{ //重写clone方法 public object clone(){ student s=super.clone(); s.date=this.date.clone(); return s; } } 代码{ s1==s2;//false s1.equals(s2);//false s1.obj==s2.obj;//true s1.obj.equals(s2.obj);//true } java.util.Date://实现了Cloneable;
如果想让复制以后对象相比较的话,重写equals就可以