本文共 939 字,大约阅读时间需要 3 分钟。
数据分为基本数据类型和引用数据类型。基本数据类型:数据直接存储在栈中;引用数据类型:存储在栈中的是对象的引用地址,真实的对象数据存放在堆内存里。
浅拷贝:对于基础数据类型:直接复制数据值;对于引用数据类型:只是复制了对象的引用地址,新旧对象指向同一个内存地址,修改其中一个对象的值,另一个对象的值随之改变。
深拷贝:对于基础数据类型:直接复制数据值;对于引用数据类型:开辟新的内存空间,在新的内存空间里复制一个一模一样的对象,新老对象不共享内存,修改其中一个对象的值,不会影响另一个对象。
/** * 深拷贝实现:首先Person 对象实现 Serializable 接口,然后自定义深拷贝方法 deepClone(): * 注意:要实现序列化接口 * @return */public Person deepClone() { try { // 输出 (序列化) ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(this); // 输入 (反序列化) ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); ObjectInputStream ois = new ObjectInputStream(bais); Person person = (Person) ois.readObject(); return person; } catch (Exception e) { e.printStackTrace(); return null; }}
转载地址:http://qkrnz.baihongyu.com/