java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java数组拷贝方法

Java数组拷贝的四种常用方式总结

作者:Geoking.

数组是 Java 最基础的数据结构之一,而 数组的拷贝(复制) 是开发中经常遇到的需求,Java 提供了多种数组复制方式,每种方式都有自己的特点和适用场景,本篇文章将系统总结 Java 中 数组拷贝的 4 种常用方式,需要的朋友可以参考下

引言

数组是 Java 最基础的数据结构之一,而 数组的拷贝(复制) 是开发中经常遇到的需求,例如:

Java 提供了多种数组复制方式,每种方式都有自己的特点和适用场景。

本篇文章将系统总结 Java 中 数组拷贝的 4 种常用方式

一、Java 数组拷贝的四种方式

1. 使用for循环(最原始、最灵活)

示例代码:

int[] src = {1, 2, 3, 4};
int[] dest = new int[src.length];

for (int i = 0; i < src.length; i++) {
    dest[i] = src[i];
}

优点:

缺点:

适用于 需要完全自定义拷贝行为的场景

2. 使用System.arraycopy()(性能最优)

示例代码:

int[] src = {1, 2, 3, 4};
int[] dest = new int[4];

System.arraycopy(src, 0, dest, 0, src.length);

参数解释:

System.arraycopy(
    Object src,     // 源数组
    int srcPos,     // 源数组起始下标
    Object dest,    // 目标数组
    int destPos,    // 目标数组起始下标
    int length      // 拷贝长度
);

优点:

缺点:

最推荐用于 高性能场景

3. 使用Arrays.copyOf()/Arrays.copyOfRange()(最常用)

3.1Arrays.copyOf()

适合复制整个数组或扩容数组。

int[] src = {1, 2, 3};
int[] dest = Arrays.copyOf(src, 5); // 扩容成长度 5

输出:

[1, 2, 3, 0, 0]

3.2Arrays.copyOfRange()

适合复制部分区域。

int[] src = {1, 2, 3, 4, 5};
int[] part = Arrays.copyOfRange(src, 1, 4);

输出:

[2, 3, 4]

优点:

缺点:

最常用于 普通开发、快速复制、数组扩容

4. 使用clone()(最简洁的深拷贝)

示例代码:

int[] src = {1, 2, 3};
int[] dest = src.clone();

优点:

缺点:

int[][] arr2d = {{1,2}, {3,4}};
int[][] clone = arr2d.clone();

clone[0][0] = 99;
System.out.println(arr2d[0][0]); // 99(浅拷贝)

适用于 简单复制整个数组的场景

二、四种数组复制方式对比总结

方法是否新数组是否支持部分复制性能是否浅拷贝适用场景
for
循环
✔(自定义)⭐☆☆深拷贝自定义规则
System.arraycopy⭐⭐⭐浅拷贝高性能需求
Arrays.copyOf✘(复制整个)⭐⭐⭐浅拷贝扩容 / 常规复制
Arrays.copyOfRange⭐⭐⭐浅拷贝区间复制
clone()⭐⭐⭐浅拷贝快速整体复制

一句话总结:

普通场景用 Arrays.copyOf
高性能场景用 System.arraycopy
语法最简单用 clone()
自定义逻辑用 for 循环

到此这篇关于Java数组拷贝的四种常用方式总结的文章就介绍到这了,更多相关Java数组拷贝方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文