17. Java 复制数组

17. Java 复制数组

在 Java 中,复制数组的一个常用方法是使用 System.arraycopy()。这个方法允许你将一个数组的部分或全部元素复制到另一个数组中。它非常高效,尤其是在需要复制大量数据时。

System.arraycopy() 方法

该方法的签名如下:

java 复制代码
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
参数说明:
  • src: 源数组,数据从这个数组中复制。
  • srcPos: 源数组的起始位置(索引)。
  • dest: 目标数组,数据将复制到这个数组中。
  • destPos: 目标数组的起始位置(索引)。
  • length: 要复制的元素数量。

例子:

java 复制代码
class ArrayCopyDemo {
    public static void main(String[] args) {
        // 原始数组
        String[] copyFrom = {
            "Affogato", "Americano", "Cappuccino", "Corretto", "Cortado",
            "Doppio", "Espresso", "Frappucino", "Freddo", "Lungo", "Macchiato",
            "Marocchino", "Ristretto" };

        // 目标数组
        String[] copyTo = new String[7];

        // 使用 System.arraycopy() 方法复制数组的部分内容
        System.arraycopy(copyFrom, 2, copyTo, 0, 7);

        // 打印目标数组的内容
        for (String coffee : copyTo) {
            System.out.print(coffee + " ");
        }
    }
}

解释:

  • 我们声明了一个包含 13 种咖啡名字的数组 copyFrom。
  • 创建了一个长度为 7 的目标数组 copyTo。
  • 使用 System.arraycopy() 方法从 copyFrom 数组的索引 2 开始,复制 7 个元素到 copyTo 数组的索引 0 开始的位置。

输出:

java 复制代码
Cappuccino Corretto Cortado Doppio Espresso Frappucino Freddo 

注意事项:

  1. 数组长度 :确保目标数组足够大以容纳从源数组复制的元素。如果目标数组太小,将抛出 ArrayIndexOutOfBoundsException。
  2. 偏移量 :srcPos 和 destPos 参数分别指定了从源数组和目标数组中开始复制的索引位置。如果起始位置超出了数组的有效范围,也会抛出异常。

总结:

System.arraycopy() 是一个非常高效的数组复制方法。它不仅可以复制整个数组,也能选择复制数组的一部分。通过适当的索引和长度设置,你可以精确控制复制的元素范围。

相关推荐
鬼手点金7 小时前
nanoGPT/nanochat 能做出 DeepSeek/Qwen 这样的大模型吗?
服务器·前端·javascript·bug·openclaw
蛋蛋的就会顺顺的7 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
程序员Sunday7 小时前
TypeScript 的 any、unknown、never 有什么区别?
前端·面试·typescript
朱涛的自习室8 小时前
70 美金的 Beyond Compare,我让 Gemini 4 和 DeepSeek 造个开源免费版(Day 2)
android·前端·人工智能
需要8268 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
小 黄 鸡8 小时前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
码艺-Alimjan8 小时前
Tauri 源码备份 · 打包 & 解压 总结,源码收集之路
前端·javascript·vue.js
小马不起床8 小时前
零基础玩转 FastAPI_11:前端后台管理页面
前端·状态模式·fastapi
子非鱼a10 小时前
【文件上传】一个普普通通的edu16
前端
美狐美颜SDK开放平台10 小时前
直播APP如何实现美白滤镜功能?视频美颜SDK技术开发方案详解
前端·数据库·人工智能·音视频·美颜sdk·直播美颜sdk·视频美颜sdk