克隆对象
思路分析
创建一个新的对象,拷贝属性值即可
代码示例
java
public class practise {
public static void main(String[] args){
person p = new person();
p.age = 10;
p.name = "jackson";
tool mytool = new tool(); // 创建tool类的一个对象
person p1 = mytool.copyperson(p); // 调用 tool 这个类的一个方法,因为返回值是person类,所以用person类的一个对象接收
System.out.println("main方法的对象p的年龄为:" + p1.age);
System.out.println("main方法中的对象p的名字为:" + p1.name);
System.out.println("复制的对象p1的年龄为:" + p1.age);
System.out.println("复制的对象p1的名字为:" + p1.name);
}
}
class person{
int age;
String name;
}
class tool{
public person copyperson(person p){
person p1 = new person();
p1.name = p.name;
p1.age = p.age;
return p1;
}
}⭐ 底层实现
(1)传递是引用数据类型,即地址传递,本质是修改引用(改变指向的地址)
(2)调用方法,新创建一个 person 类,内存中会申请一段新的堆空间,p1 指向这段新的堆空间
(3)两个堆空间相互独立,调用方法,进行值拷贝
(4)方法执行完成,返回 p1 的地址,由于在主栈中用变量接收了返回值,即新的堆空间得到了引用,该堆空间不会当作垃圾进行回收,拷贝完成

