千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:重庆千锋IT培训  >  技术干货  >  Java中数组复制的三种方式你都会吗?

Java中数组复制的三种方式你都会吗?

来源:千锋教育
发布人:lxl
时间: 2023-02-16 14:35:50

  hello,大家好!今天给大家分享一个虽然很基础,但却很常用的技能点,那就是数组的复制。之所以要给大家分享这个知识点的原因有二,首先数组是我们常用的一种存储结构,经常需要把一个数组中的元素复制到另一个数组中;另外我们在阅读集合的底层源码时,比如ArrayList集合,它的底层就是数组。当集合扩容时,其中的一个过程就是进行数组的复制,如果我们对这个复制过程不理解,自然也就读不懂这个源码了。所以今天就给大家讲解数组的三种复制方式,希望今天的内容可以帮助大家巩固基础知识。

  首先我们来看看第一种数组复制方式。

  一. 第一种,遍历的过程中完成数组的复制

  代码案例

  第一种数组复制方式的案例代码如下:

XUE%J]5]6PG7AS33~V~9X@N

  运行结果如下

1280X1280

  执行结果分析

  这种复制方法最简单易懂,但每次复制的时候都需要进行遍历,比较繁琐。

  接下来我们再来看第二种数组复制方式。

  二. 第二种,调用Arrays类中的copyOf()方法

  源码分析

  通过阅读源码我们发现,Arrays类中对copyOf()方法进行了重载,也就是能够对各种类型的数组进行复制。

1280X1280 (1)

  我们以案例中的整形数组为例,先阅读以下复制整形数组的源码

TR$@9DT)25~D$$8[`LM(``Q

  源码分析:

  方法的参数1: original 是要复制的数组;

  方法的参数2: newLength 是复制后的数组的长度,也可以理解为要复制几个元素,因为这个值是多少,新数组的长度就是多少;

  方法的返回值: 就是新创建的复制之后的数组。

  案例代码

  先通过int[] copy = new int[newLength]; 创建了一个新的数组。然后调用System类的arraycopy方法完成的数组复制,后续会讲解System.arraycopy()方法。

ZEE9(3VOEAJFKIOVA@{IR$U

  执行结果

e3f97f5d-0064-41d1-9cc5-93ac0533f003

  最后我们再来看第三种数组复制方式。

  三. 第三种,直接调用System.arraycopy()方法

  System.arraycopy()方法分析

  我们先看一下这个System.arraycopy()方法的源码声明。

LH4P9}}HS9(JSEVI8TR@LV2

  方法参数解析如下:

  •   参数src: 要源数组,也就是要从这个数组里复制;
  •   参数srcPos: 从源数组中复制元素的起始位置;
  •   参数dest:目标数组,也就是复制到哪个数组中;
  •   参数destPos:复制到目标数组的起始位置;
  •   参数length: 要赋值的数组的元素个数。

S1B)(V0}U53%~T2O}FZ$}P8

  执行结果

e4e000b4-3255-4899-9111-9c9ce8dde381

  结果分析

  这种方法的好处就是比较灵活,不必复制整个数组,可以自己定义从哪个元素开始复制,以及复制多少个元素。

b9df3651-bbfd-4c04-a2f9-6546dacf49b3

  现在你对Java中数组的复制方式了解了吗?如果你还有其他疑问,可以在评论区留言哦。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

java的输入语句—— Scanner类

2023-05-04

java数据库操作常识事务的四大特性

2023-05-04

DML数据操作之增加或删除数据

2023-05-04

最新文章NEW

socket是什么?有什么作用?

2023-05-04

Java常量定义是什么

2023-04-28

一分钟带你学多线程

2023-04-28

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>