浅谈Java中复制数组的方式

作者:范红康 时间:2022-04-14 23:30:27 

        在Java里面,可以用复制语句”A=B”给基本类型的数据传递值,但是如果A,B是两个同类型的数组,复制就相当于将一个数组变量的引用传递给另一个数组;如果一个数组发生改变,那么引用同一数组的变量也要发生改变。
        以下是归纳的 java 中复制数组的方法:
        (1) 使用FOR循环,将数组的每个元素复制或者复制指定元素,不过效率差一点
        (2) 使用clone方法,得到数组的值,而不是引用,不能复制指定元素,灵活性差一点
        (3) 使用System.arraycopy(src, srcPos, dest, destPos, length)方法,推荐使用

举例:
1.使用FOR循环


int[] src={1,3,5,6,7,8};
int[] dest = new int[6];
for(int i=0;i<6;i++) dest[i] = src[i];

2.使用clone


int[] src={1,3,5,6,7,8};
int[] dest;
dest=(int[]) src.clone();//使用clone创建

副本,注意clone要使用强制转换
3.使用System.arraycopy


int[] src={1,3,5,6,7,8};
int[] dest = new int[6];
System.arraycopy(src, 0, dest, 0, 6);

        System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制。
        其函数原型是:public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

        src:源数组;;srcPos:源数组要复制的起始位置;
        dest:目的数组;destPos:目的数组放置的起始位置;
        length:复制的长度。

        注意:src and dest都必须是同类型或者可以进行转换类型的数组。有趣的是这个函数可以实现自己到自己复制,比如:


int[] fun ={0,1,2,3,4,5,6};
System.arraycopy(fun,0,fun,3,3);

则结果为:{0,1,2,0,1,2,6};

        以上介绍的就是Java语言中数组的几种复制方法网站的支持!

来源:http://blog.csdn.net/sinat_29384657/article/details/51768779

标签:java,数组复制
0
投稿

猜你喜欢

  • Android 8.0系统中应用图标的适配微技巧

    2022-09-29 00:22:26
  • android通过servlet上传文件到服务器

    2021-10-07 05:44:02
  • Java运行环境搭建的图文教程

    2021-06-22 07:44:41
  • spring cloud consul注册的服务报错critical的解决

    2021-05-28 14:13:14
  • Springboot POI导出Excel(浏览器)

    2022-07-08 18:41:17
  • Android 暂停和恢复Activity

    2021-07-09 06:33:18
  • c#检测文本文件编码的方法

    2021-09-16 03:33:43
  • 阿里面试Nacos配置中心交互模型是push还是pull原理解析

    2023-04-09 06:40:54
  • Spring整合WebSocket应用示例(上)

    2023-05-05 10:09:21
  • Spring JPA配置文件Eclipse报错如何解决

    2022-05-07 00:51:34
  • js事件模型与自定义事件实例解析

    2021-05-26 06:15:06
  • Mybatis基于注解形式的sql语句生成实例代码

    2023-03-07 03:48:11
  • c# chart缩放,局部放大问题

    2021-09-26 20:46:40
  • Android学习笔记(一)环境安装及第一个hello world

    2022-03-10 03:05:43
  • 全面详解Maven打包及其相关插件和高级特性

    2022-03-03 21:10:00
  • C#中正则表达式(Regex)过滤内容的基本使用方法

    2023-11-26 12:51:00
  • C语言 OutputDebugString与格式化输出函数OutputDebugPrintf案例详解

    2023-11-02 16:21:47
  • c# 反射用法及效率对比

    2022-06-11 17:50:19
  • Opencv图像处理之轮廓外背景颜色改变

    2022-02-17 01:33:34
  • OpenGL绘制Bezier曲线的方法

    2023-11-01 03:59:30
  • asp之家 软件编程 m.aspxhome.com