java中队对象的拷贝分为深拷贝与浅拷贝。
平时我们使用的一半是浅拷贝
比如 Student s1 = new Student();
Student s2 = s1;
这里 s2 = s1 ;就是浅 拷贝, 浅拷贝弊端不小 ,由于s1,和s2都是引用类型,指向的都是同一个对象,
如果改了s1和s2中一个的属性,另一个的属性也会跟着变化。
假如我们有这样一个需求, 一个方法,需要改变s1中的属性,但是方法结束之后,需要把s1恢复为原来的值。
这时浅拷贝就可能满足不了我们要求了。
这时就需要深拷贝了,深拷贝是完全复制一份与原对象完全一样的对象。
java Object 提供了一个方法 clone(),对象克隆,复制一份完全一样的对象。
Student s1 = new Student();
Student s2 = s1.clone();
这时s2和s1指向的对象不是同一个对象,但是对象的属性值相同。 hashcode()相同不相同就不知道了。
这时上面的需求就能轻易实现了。
Student s1 = new Student();
Student s2 = s1.clone();
changge(s1);
handle(s1);
s1 = s2;