数组浅复制&深复制

    // 浅复制
    var nums = [];//创建数组,推荐使用[]操作符,大多数专家认为其有更高的效率
    for ( var i = 0; i < 100; ++i) {
        nums[i] = i + 1;
    }
    var samenums = nums;
    nums[0] = 400;
    alert(samenums[0]); // 显示 400
    //深复制
    function copy(arr1, arr2) {
        for ( var i = 0; i < arr1.length; ++i) {
            arr2[i] = arr1[i];
        }
    }
    var nums = [];
    for ( var i = 0; i < 100; ++i) {
        nums[i] = i + 1;
    }
    var samenums = [];
    copy(nums, samenums);
    nums[0] = 400;
    alert(samenums[0]); // 显示 1
时间: 2024-11-23 05:08:25

数组浅复制&深复制的相关文章

python中对列表浅复制深复制另类的理解方式

'''创建者:徐洋创建时间:2017年6月13日22:25:23代码功能:详细分析列表的浅copy和深度copy'''#导入copy模块import copylist1 = [1,2,3,["a","b","c"]]#对表1进行浅复制list2 = copy.deepcopy(list1)#copy.copy#查询表1中各个元素的内存地址address0 = id(list1[0])address1 = id(list1[1])address2

浅复制 - 深复制

Shallow Copy System.Object.MemberwiseClone():受保护的方法. Deep Copy 实现ICloneable接口并重写Clone()方法: public class A : ICloneable{ public A() {} public object Clone() { A objA = new A(): return objA: } }

也来谈一谈js的浅复制和深复制

1.浅复制VS深复制 本文中的复制也可以称为拷贝,在本文中认为复制和拷贝是相同的意思.另外,本文只讨论js中复杂数据类型的复制问题(Object,Array等),不讨论基本数据类型(null,undefined,string,number和boolean),这些类型的值本身就存储在栈内存中(string类型的实际值还是存储在堆内存中的,但是js把string当做基本类型来处理 ),不存在引用值的情况. 浅复制和深复制都可以实现在已有对象的基础上再生一份的作用,但是对象的实例是存储在堆内存中然后通

JavaScript中对象的浅复制和深复制

在JavaScript中,如果要复制一个变量我们应该怎么做呢?下面这种做法是最简单的一种形式: //把a复制给b let a = 12; let b = a; 这种复制方法只能适用于基本类型,如果a是对象怎么办呢?我们先来看看上面的代码在内存中做了什么事: 声明了变量a = 12,栈内存会分配一块区域来存储,如上图所示.把a赋给b,会在栈中重新开辟一块区域来存储b,并且b的值就是a的值. 假如a是对象,内存做了什么事呢?来看下面的例子: let a = {}; let b = a; 如图所示,对

C#中的浅复制和深复制

浅复制:复制出来一个对象,但对象中的引用没有被复制,而是与原来的对象公用,改变一个,另一个也跟着变 public School Copy() {             return (School)this.MemberwiseClone();         } 注意:浅复制可以复制的有: 值类型(int,float) :字符串string也能被复制 深复制:复制出来一个对象,对象中的引用同时也被复制,就是完全复制: public School DeepCopy()         {   

关于深复制与浅复制

转自“红黑联盟”,网址:http://www.2cto.com/kf/201405/302273.html 第一.复制对象的基本概念 复制一个对象为副本,开辟一块新的内存来存储副本对象. 第二.如果一个对象想具备复制的功能,必须实现协议和协议 NSObject自带的常用的对象有:NSNumber.NSString.NSArray.NSDictionary.NSMutableArray.NSMutableDictionay.NSMutableString,copy产生的对象时不可变的,mutabl

Java中的深复制和浅赋值

深复制和浅复制也称为深拷贝和浅拷贝.简单的说就是创建一个和当前对象一模一样的对象.在日常编码的过程中使用的几率并不多,但在面试中却会被经常问到. 了解深复制和浅复制的原理后,可以帮助我们对Java中的值传递和引用传递有更深刻的理解. 浅复制 下面的实例中,我们创建一个原始类Monster,调用对象的clone方法复制一个新的对象. 注意:要调用对象的clone方法,需要让类实现Cloneable接口,并重写clone方法 public class Monster implements Clone

iOS 集合的深复制与浅复制

概念 对象拷贝有两种方式:浅复制和深复制.顾名思义,浅复制,并不拷贝对象本身,仅仅是拷贝指向对象的指针:深复制是直接拷贝整个对象内存到另一块内存中. 一图以蔽之 再简单些说:浅复制就是指针拷贝:深复制就是内容拷贝. 集合的浅复制 (shallow copy) 集合的浅复制有非常多种方法.当你进行浅复制时,会向原始的集合发送retain消息,引用计数加1,同时指针被拷贝到新的集合. 现在让我们看一些浅复制的例子: NSArray *shallowCopyArray = [someArray cop

深复制与浅复制

概念 对象拷贝有两种方式:浅复制和深复制.顾名思义,浅复制,并不拷贝对象本身,仅仅是拷贝指向对象的指针:深复制是直接拷贝整个对象内存到另一块内存中. 一图以蔽之 再简单些说:浅复制就是指针拷贝:深复制就是内容拷贝. 集合的浅复制 (shallow copy) 集合的浅复制有非常多种方法.当你进行浅复制时,会向原始的集合发送retain消息,引用计数加1,同时指针被拷贝到新的集合. 现在让我们看一些浅复制的例子: NSArray *shallowCopyArray = [someArray cop