今天学习的内容是什么?数组系列当中的关于拷贝的知识点。什么是数组拷贝?接下来通过案例去了解一下。比如现在有一个数组,这个数组叫every south,原数组。接下来它的内容非常简单,搞一个一二三四五就ok了。再搞一个目标数组every party,目标数组。
这个数组采用一个方式就是先定义后赋值,实际上本身是有值的,这个是直接定义,直接把值匹配好。这个是怎么先定义后赋值?这里是十个零,这个是数值化,数组一定会数值化,这个和普通的变量是有区别的,因为它是引用类型。
接下来为什么要进行拷贝?比如现在希望把一二三四五放到中心当中去,因为长度是十,是它的双倍,也就相当于前面是一二三四五,后面对应的是几个五个零,是这样的一个方式,这样就实现了一个简易的数组拷贝。

数组拷贝其实并不难,通过循环其实完全可以搞定,但是每次通过循环写非常的麻烦,所以有没有简明讹要的方式?答案是肯定的,一定是有的。可以通过官方提供的一些方法现成的api来解决这个问题。
因为关于数组后面复制的东西其实集合当中有大量的使用,所以在这里还是要做一个基础性的了解。every south可以调一个copy two的方法,通过copy two的方法里面有两个参数,只需要把参数传进去就ok了。第一个是数组的实现,第二个是怎么?所以怎么copy two?直接拷贝,然后要把这个数组复制到哪里?复制到这里来,所以第一个参数就是它,这样就ok了。
第二个是怎么intex?这个叫猜,猜,这是个索引,大概是什么?要拷贝到这个数组从哪个索引开始?是不是这样子的?所以在这里先从零开始,从零开始也就相当于要把这个数组的内容拷贝到这个数组从零开始的位置,就相当于最终会得到一个这样的结果。
接下来打印一下看看结果,接待器,当然了要打印的是速度,不是上面的south,要把south copy给塞,这个是要区分清楚的。点击执行,看是从零开始,将数第一个数组的一二三四五从零开始拷贝到第二个数组当中去,这个已经成功的实现了。
接下来调整一下,所以从二开始,从零开始,二开始是怎么样子的?是不是应该这样的?零零后面少两个人,是不是应该是这个样子的?再做一个尝试,这个也没有问题,这样就实现了一个数组拷贝的基础的操作。
完成数组基本拷贝的操作之后,其实有的小伙伴的心里会想有没有更加灵活的方式满足差异化的需求?希望将第一个数组当中的一个部分、一个区间拿出来,然后拷贝到第二个数组当中的一个指定位置。这样的操作可不可以?答案是肯定的,也是没有问题的。
说到数组,其实之前学习里面有一个非常重要的类就是everyday,它是一个工具类,封装了很多关于数组基本操作的一些方法。对于拷贝来讲,它的方法名字肯定叫copy,copy的api相对来说会多一些。
先试验一下第一个api,就是艾瑞sosiri,这是第一个复制的第一个数组。第二个是要把这个数组拷贝到哪一个数组当中去?目标数组是怎么?第三个就是拷贝的长度。简单来说就是将第一个数字当中指定个数的元素拷贝到第二个数字当中去,就是这样的操作。
拷贝一下,第一个数组拷贝south,第二个拷贝到哪里去?拷贝到every里面去,拷贝的长度是多少?就拷贝一个everysouth点,loss都拷贝。拷贝完之后来看一下结果,后面是五个零,和开始做的操作是完全一样的。
接下来做一个选择,不拷贝五个了,拷贝两个看一看怎么玩?就是一二,不是一二三四五了。如果想拷贝三四五操作怎么办?要把三四五拷贝到目标数组的指定位置能不能做?答案是肯定的,也是没问题的。这个时候就要对参数进行差异化的设置。
对于第一个数组来讲,要从哪开始选?是不是从二开始选?所以从这个位置开始选,选几个?选三个。第二个要拷贝的目标数组,目标数组的位置从几开始?可以选择从五开始,也没有问题。
接下来要从第一个数组最后一个参数,从第一个数组当中拷贝几个到第二个数组五的位置开始,五的位置。接下来选三个,所以这个参数还是要再去看一遍,有五个参数看起来比较复杂,实际上还是非常有规律的。第一个参数就是目标速度,要从哪个速度拷贝?这是起始速度,需要拷贝的数组。
·第二个是怎么了?就是从缩影为几的位置开始,最后一个参数是拷几个。
·接下来就是这个区间,把第一个数组的区间拿出来,拷贝到第二个数组,从几开始的缩影?从五开始的缩影,所以最终出来的结果应该是多少?先上来五个零,接下来拷贝三四五,零零,是不是应该是这样的值?最终的结果。
来验证一下,一二三四五,五个零,三四五,后面补两个零,这样操作就ok了。
最后一个参数实际上还是要注意的,因为从二开始取三个,其实这个数组已经取完了,这个时候如果取了四,肯定会炸,会爆,告诉一个数组怎么样,我是闹它浪的,它不够足,没有足够的长度去供你选择,所以最后一个参数还是要慎重的,一定要不要出现越界的操作。
小伙伴们通过今天的学习掌握了数足拷贝的一些常用的技巧,今天学习内容到此结束,感谢您的观看,下期再见。