一、创建对象的方式
1. new关键字,A a=new A();
2. Constructor类的newInstance()方法,反射实现
3. Class类的newInstance()方法,内部还是调用Constructor类的newInstance()方法,反射实现
4. clone()方法,复制对象产生一个新对象
5. 序列化反序列化
二、引用拷贝 vs 对象拷贝
A a1=new A();
A a2=a1; // a2和a1是同一个对象,内存地址相同,即引用相同
三、浅拷贝:值类型拷贝值,引用类型只拷贝了引用而不拷贝引用的对象,拷贝出来的对象和原对象共用引用
1. 当前类实现Cloneable接口
2. 引用类型使用的还是同一个引用
四、深拷贝:值类型和引用类型都复制,拷贝出来的对象和原对象相互独立
1. 除了类本身要实现Cloneable接口,类中的其他引用类也要实现Cloneable接口,比较麻烦
2. 对a1序列化,反序列化到a2,可以实现深拷贝
参考:
https://www.cnblogs.com/ysocean/p/8482979.html
原文地址:https://www.cnblogs.com/june0816/p/11421457.html
时间: 2024-10-07 06:00:07