欢迎访问宙启技术站
智能推送

arraycopy函数来复制数组的内容

发布时间:2023-06-18 08:28:47

Java中提供了一个系统自带的函数——System.arraycopy(),可以用来复制数组内容。它可以把任意类型数组的任意部分复制到目标数组,灵活方便,性能非常高。

System.arraycopy()方法的定义如下:

public static void arraycopy(Object src, int srcPos, 

    Object dest, int destPos, int length)

其中:

src:源数组。

srcPos:源数组中开始复制的位置。

dest:目标数组。

destPos:目标数组中开始复制的位置。

length:要复制的数组元素的数量。

例如,要把一个包含5个整数的数组src复制到另一个数组dest:

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

int[] dest = new int[5];

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

上面的代码会让数组dest包含src里面的所有元素。

System.arraycopy()的优点:

1. 灵活性:可以复制任意类型的数组,包括原始类型和对象类型。

2. 高效性:比Java中的常规数组操作更快,因为它使用了本地代码来处理复制操作,从而避免了Java的数组循环。

3. 可靠性:不会出现数组越界或出现任何其他问题的问题,因为它是一个系统自带的函数,已经经过了详细的测试和验证。

需要注意的是:

1. 从src复制的元素数量不能大于src的长度。

2. 如果src和dest是引用数组,那么复制的是引用,即dest中的元素和src中的元素指向同一个对象。

下面是一个完整的System.arraycopy()示例:

public class ArrayCopyDemo {

    public static void main(String[] args) {

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

        int[] dest = new int[5];

        // Copy the entire src array to the dest array

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

        // Print the contents of the dest array

        for (int i = 0; i < dest.length; i++) {

            System.out.println("dest[" + i + "] = " + dest[i]);

        }

    }

}

以上示例代码将输出:

dest[0] = 1

dest[1] = 2

dest[2] = 3

dest[3] = 4

dest[4] = 5

总之,System.arraycopy()是Java中非常有用的一个函数,对于需要处理大量数据的应用程序和算法来说尤其重要。它不仅使代码更加简洁,而且可以大大提高数组复制的性能和效率。