• 浅拷贝与深拷贝


    浅拷贝

    对象的浅拷贝会对“主”对象进行拷贝,但不会复制主对象"里面的对象"。
    "里面的对象"会在原来的对象和它的副本之间共享。
    
    引用数据类型的成员变量,比如说成员变量是某个数组、某个类的对象等,那么浅拷贝会进行引用传递。
    
    
    自带的copy实现浅拷贝。需要实现cloneable接口
    

    深拷贝

    不同于浅拷贝,深拷贝是一个整个独立的对象拷贝。如果我们对整个Person对象进行深拷贝,我们会对整个对象的结构都进行拷贝。
    
    
    将对象序列化为字节序列后,默认会将该对象的整个对象图进行序列化,再通过反序列即可完美地实现深拷贝。
    
        public Object copyObject(Object object) throws IOException, ClassNotFoundException {
            //创建字节数组输出流将拷贝对象写入
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            //创建对象输出流将字节数组输出流传入直接将对象写入字节输出流
            ObjectOutputStream objectOutputStrea = new ObjectOutputStream(byteArrayOutputStream);
            objectOutputStrea.writeObject(object);
    
            //将刚写入的输出流转化为字节数组传入字节数组输入流
            ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
    
            //对象输入流包装读取为一个对象
            ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
            return objectInputStream.readObject();
        }
    
  • 相关阅读:
    大爽Python入门教程 3-6 答案
    大爽Python入门教程 2-5 *拓展实践,对比与思考
    大爽Python入门教程 3-1 布尔值: True, False
    大爽Python入门教程 3-2 条件判断: if...elif..else
    企业微信获取code
    python inspect模块
    数据仓库之数据质量建设(深度好文)
    seleniumwire
    Jacoco增量代码覆盖率
    git对已经提交过的文件添加到.gitignore
  • 原文地址:https://www.cnblogs.com/loveer/p/11666299.html
Copyright © 2020-2023  润新知