当前位置:首页 > Java

java如何复制数组

2026-03-03 23:25:34Java

使用 System.arraycopy() 方法

System.arraycopy() 是 Java 中高效的原生数组复制方法,适用于任意类型的数组。语法如下:

System.arraycopy(srcArray, srcPos, destArray, destPos, length);
  • srcArray:源数组
  • srcPos:源数组起始位置
  • destArray:目标数组
  • destPos:目标数组起始位置
  • length:要复制的元素数量

示例代码:

int[] src = {1, 2, 3, 4, 5};
int[] dest = new int[5];
System.arraycopy(src, 0, dest, 0, src.length);

使用 Arrays.copyOf() 方法

Arrays.copyOf() 适用于快速复制整个数组或截取部分元素,自动创建目标数组。语法:

destArray = Arrays.copyOf(srcArray, newLength);
  • newLength:目标数组长度(可扩展或截断)

示例代码:

import java.util.Arrays;
int[] src = {1, 2, 3};
int[] dest = Arrays.copyOf(src, src.length); // 完整复制
int[] partialDest = Arrays.copyOf(src, 2);   // 复制前两个元素

使用 Arrays.copyOfRange() 方法

若需复制数组的特定区间,可使用 Arrays.copyOfRange()

destArray = Arrays.copyOfRange(srcArray, fromIndex, toIndex);
  • fromIndex:起始索引(包含)
  • toIndex:结束索引(不包含)

示例代码:

int[] src = {10, 20, 30, 40};
int[] dest = Arrays.copyOfRange(src, 1, 3); // 结果为 {20, 30}

手动循环复制

通过循环遍历数组元素逐个赋值,适合需要自定义处理的场景:

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

使用 clone() 方法

数组对象自带的 clone() 方法可快速实现浅拷贝:

java如何复制数组

int[] src = {8, 9};
int[] dest = src.clone();

注意事项

  • 多维数组复制时需逐层处理,否则会导致浅拷贝(子数组引用共享)。
  • 对象数组复制仅拷贝引用,深拷贝需手动实现或使用序列化工具。

标签: 数组java
分享给朋友:

相关文章

如何查看java版本

如何查看java版本

查看 Java 版本的方法 通过命令行工具 打开终端(Windows 为命令提示符或 PowerShell,macOS/Linux 为 Terminal),输入以下命令并回车: java -ve…

java如何运行

java如何运行

运行Java程序的基本方法 Java程序的运行需要经过编写、编译和执行三个主要阶段。以下是具体步骤: 编写Java源代码 创建一个以.java为后缀的文件,例如HelloWorld.java。文件内…

如何学java

如何学java

学习Java的基础知识 Java是一门面向对象的编程语言,掌握基础语法是入门的关键。需要了解变量、数据类型、运算符、控制结构(如if-else、for循环、while循环)、数组等概念。可以通过官方文…

java前景如何

java前景如何

Java 当前的市场需求 Java 在企业级开发、大数据、云计算等领域仍占据重要地位。许多大型企业(如银行、电商平台)依赖 Java 构建后端系统。招聘平台数据显示,Java 开发岗位数量稳定,尤其在…

java中如何定义数组

java中如何定义数组

定义数组的基本语法 在Java中,数组是固定长度的同类型数据集合。定义数组需指定数据类型和数组名称,可通过两种方式声明: 数据类型[] 数组名;数据类型 数组名[]; 推荐使用第一种方式,更符合Ja…

如何成为java架构师

如何成为java架构师

掌握扎实的Java基础 深入理解Java核心知识,包括多线程、集合框架、JVM原理、设计模式等。熟悉Java生态中的常用框架如Spring、MyBatis、Hibernate等,并能分析其源码实现。…