zoukankan      html  css  js  c++  java
  • System.arraycopy() 和 Arrays.copyOf() 的区别说明

    当对数组进行拷贝操作时,常用的一般有两种方式对数组进行拷贝,一种是使用 System.arraycopy() 方法进行拷贝,另外一种是使用 Arrays.copyOf() 方法进行拷贝。

    但这两种拷贝方法有什么区别呢?在选择拷贝方式时应该如何选择呢?下面我用代码进行讲解吧。

    1、Arrays.copyOf() 代码示例

    //原始数组
    int[] array = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};
    //使用 Arrays.copyOf() 方法返回的新数组 int[] newArray = Arrays.copyOf(array, 3); System.out.println(Arrays.toString(newArray));

    上面代码的输出信息为:

    [1, 2, 3]

    从上面的代码和输出信息可以看出:在使用 Arrays.copyOf() 方法对数组进行拷贝时,只需要传递两个参数,一个是源数组,也就是你想从哪个数组里拷贝信息,另一个参数是需要拷贝的数组长度。

    2、System.arraycopy() 代码示例

    //源数组
    int[] array = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};
    //目标数组,数组长度为10
    int[] newArray = new int[10];
    //拷贝
    System.arraycopy(array, 2, newArray, 2, 3);
    
    System.out.println(Arrays.toString(newArray));

    上面代码的输出信息为:

    [0, 0, 3, 4, 5, 0, 0, 0, 0, 0]

    从上面的代码可以看出:在使用 System.arraycopy() 方法对数组进行拷贝时,只需要传递五个参数,一个是源数组,也就是你想从哪个数组里拷贝信息,第二个参数是从源数组中开始拷贝的位置(注意:数组下标是从0开始的),第三个参数是目标数组,也就是你想把数据拷贝到哪个数组;第四个参数是从目标数组中开始放置信息的位置;第五个参数是拷贝数据的长度。

    System.arraycopy() 和 Arrays.copyOf() 的说明

    1、使用 Arrays.copyOf() 方法对数组进行拷贝时,不需要目标数组的信息,只需要源数组和拷贝数据的长度信息,返回的新数组的长度也就是拷贝数据的长度;

    2、使用 System.arraycopy() 方法对数组进行拷贝时,需要目标数组的信息,同时需要原始数组、原始数组的拷贝位置,目标数组的拷贝位置和拷贝长度信息;

    3、Arrays.copyOf() 底层也有调用 System.arraycopy() 。

  • 相关阅读:
    (dp)LeetCode Weekly Contest 34 -Non-negative Integers without Consecutive Ones
    (后缀数组)poj 3581 Sequence
    (最小生成树)Codeforces 76 A Gift
    (最小生成树)Codeforces Educational Codeforces Round 9 Magic Matrix
    (AC自动机)UVALive
    (trie)BUAAOJ 371
    CCF 201312-3 最大的矩形
    http错误代码含义
    数据结构-5-二叉树的实现以及递归遍历的实现
    数据结构-3.4-栈与队列
  • 原文地址:https://www.cnblogs.com/hs2018/p/12674883.html
Copyright © 2011-2022 走看看