导读:本期聚焦于小伙伴创作的《在Java中如何复制数组内容_数组复制的多种方式介绍》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《在Java中如何复制数组内容_数组复制的多种方式介绍》有用,将其分享出去将是对创作者最好的鼓励。

在Java编程中,数组复制是日常开发里非常常见的操作,不同的复制方式在实现逻辑、性能表现和适用场景上都有明显差异,开发者需要根据实际需求选择最合适的方式。数组复制分为浅复制和深复制,本文介绍的常规数组复制方式均为浅复制,对于引用类型数组仅复制引用地址。

在Java中如何复制数组内容_数组复制的多种方式介绍

一、手动遍历复制数组

手动遍历复制是最基础的数组复制方式,通过循环遍历原数组的每个元素,逐个赋值到新数组中,这种方式逻辑简单,容易理解,适合新手入门使用。

实现步骤如下:

  • 创建一个新的数组,长度与原数组一致
  • 使用for循环或者增强for循环遍历原数组
  • 将每个元素赋值到新数组的对应位置

以下是手动遍历复制int类型数组的代码示例:

public class ArrayCopyDemo {
    public static void main(String[] args) {
        int[] originalArray = {1, 2, 3, 4, 5};
        // 创建长度相同的新数组
        int[] newArray = new int[originalArray.length];
        // 遍历赋值
        for (int i = 0; i < originalArray.length; i++) {
            newArray[i] = originalArray[i];
        }
        // 验证复制结果
        for (int num : newArray) {
            System.out.println(num);
        }
    }
}

二、使用clone方法复制数组

Java中所有的数组都继承自Object类,因此都拥有clone方法,该方法可以快速复制数组,返回的是一个新的数组对象,对于基本类型数组是值复制,对于引用类型数组是引用复制。

clone方法的使用非常简单,直接调用原数组的clone方法即可,不需要额外导入其他类,代码简洁度高。

以下是使用clone方法复制数组的示例:

public class ArrayCloneDemo {
    public static void main(String[] args) {
        String[] originalStrArray = {"Java", "Python", "C++"};
        // 调用clone方法复制数组
        String[] clonedArray = originalStrArray.clone();
        // 修改原数组元素,验证克隆数组是否受影响
        originalStrArray[0] = "Go";
        System.out.println("原数组第一个元素:" + originalStrArray[0]);
        System.out.println("克隆数组第一个元素:" + clonedArray[0]);
    }
}

三、使用Arrays.copyOf方法复制数组

Arrays类是Java提供的用于操作数组的工具类,其中的copyOf方法可以方便地复制数组,还可以指定新数组的长度,如果新长度比原数组长,多余的位置会用数组类型的默认值填充。

copyOf方法有两个参数,第一个是原数组,第二个是新数组的长度,返回值是复制后的新数组。

以下是使用Arrays.copyOf方法复制数组的示例:

import java.util.Arrays;

public class ArraysCopyOfDemo {
    public static void main(String[] args) {
        int[] originalArray = {10, 20, 30};
        // 复制长度与原数组一致
        int[] copyArray1 = Arrays.copyOf(originalArray, originalArray.length);
        // 复制长度比原数组长,多余位置用0填充
        int[] copyArray2 = Arrays.copyOf(originalArray, 5);
        System.out.println("copyArray1长度:" + copyArray1.length);
        System.out.println("copyArray2长度:" + copyArray2.length);
        System.out.println("copyArray2第四个元素:" + copyArray2[3]);
    }
}

四、使用System.arraycopy方法复制数组

System.arraycopy是Java提供的底层数组复制方法,native修饰说明它是本地方法,性能通常比前几种方式更好,适合需要高性能复制的场景。

该方法有五个参数,分别是原数组、原数组起始位置、目标数组、目标数组起始位置、复制长度,使用时需要提前创建好目标数组,且目标数组长度要足够容纳复制的内容。

以下是System.arraycopy的使用示例:

public class SystemArraycopyDemo {
    public static void main(String[] args) {
        int[] srcArray = {1, 2, 3, 4, 5};
        int[] destArray = new int[3];
        // 从原数组索引1开始,复制3个元素到目标数组的起始位置
        System.arraycopy(srcArray, 1, destArray, 0, 3);
        for (int num : destArray) {
            System.out.println(num);
        }
    }
}

五、不同复制方式对比

为了帮助开发者选择合适的复制方式,以下是几种常见方式的对比:

复制方式性能灵活性使用难度适用场景
手动遍历复制较低高,可自定义复制逻辑需要自定义复制逻辑的场景
clone方法中等低,只能完整复制快速完整复制数组的场景
Arrays.copyOf中等中等,可指定新数组长度需要复制并可能调整数组长度的简单场景
System.arraycopy高,可指定复制的起始位置和长度中等高性能要求、需要部分复制的场景

六、注意事项

在使用数组复制时需要注意以下几点:

  • 以上介绍的复制方式都是浅复制,如果数组元素是引用类型,复制后新旧数组的对应元素会指向同一个对象,修改对象内容会影响两个数组
  • 使用System.arraycopy时,如果复制长度超过原数组或者目标数组的容量,会抛出IndexOutOfBoundsException异常
  • 如果原数组为null,调用clone、Arrays.copyOf、System.arraycopy都会抛出NullPointerException异常,使用前需要做好非空判断
如果需要实现引用类型数组的深复制,需要遍历数组,对每个引用对象单独创建新实例并赋值,不能仅使用上述浅复制方式。

Java数组复制System_arraycopyArrays_copyOfclone修改时间:2026-06-28 12:09:27

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。