zoukankan      html  css  js  c++  java
  • 浅复制 深复制 序列化

    • 浅复制

      值类型的复制没有浅复制或深复制之说。浅(深)复制针对的是引用类型。比如数组Array的Clone()就是浅复制,对于值类型数组,克隆方法会产生两个独立的数组,克隆引用类型数组会产生指向相同对象的两个数组。

         举例,数组的Clone()方法,返回object类型的引用,它必须被强制转换成数组类型。

    static void Main(){
        int[] intArr1={1,2,3};
        int[] intArr2=(int[])intArr1.Clone();
        intArr2[0]=100,intArr2[1]=200;intArr2[2]=300;
    }

    上述图解:

    class A{
        public int value=5;
    }
    class Program{
        static void Main(){
            A[] AArray1=new A[3]{new A(),new A(),new A()};
            A[] AArray2=(A[])AArray1.Clone();
            AArray2[0].Value=100;
            AArray2[1].Value=200;
            AArray2[3].Value=300;
        }
    }

    上述图解:

    • 序列化

      前面博客(http://www.cnblogs.com/tobecabbage/p/3492566.html)已有记录

          序列化复习

      序列化的定义:直接将内存中的数组原封不动的以特定的格式形式存储起来。

      -》二进制序列化(将内存中的数组直接以二进制的形式取出)

        -》步骤:

          1.创建一个文件流

          2.确保对象可以被序列化,给类前面加上[Serializable]。比如int类前就加了[Serializable]

          3.BinaryFormatter

          4.Serialize()或者DeSerialize()反序列化

      -》XML序列化

      ♦ 用序列化反序列化实现深复制

      

  • 相关阅读:
    Springboot 2响应式编程 WebFlux 初体验
    MyBatis集成到Spring
    Java 常用的转换、排序
    Springboot 2使用外部Tomcat源码分析
    Springboot 2启动内置Tomcat源码分析
    Springboot 2启动源码流程
    Springboot 2使用SpringApplication
    IDEA效率插件JRebel的使用
    Spring 源码总结
    Spring事件监听器源码
  • 原文地址:https://www.cnblogs.com/tobecabbage/p/3542010.html
Copyright © 2011-2022 走看看