System.arraycopy

public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length); System 类中提供了一个 native 的静态方法 arraycopy(),可以使用这个方法来实现数组之间的复制。 对于一维数组来说, 修改副本不会影响原来的值。 对于二维数组或者一维数组中存放的是对象时, 修改副本时, 会影响原来的数组。
public static void arraycopy(Object src,
                             int srcPos,
                             Object dest,
                             int destPos,
                             int length)
							 
参数:
src  - 源数组。
srcPos  - 源数组中的起始位置。
dest  - 目标数组。
destPos  - 目标数据中的起始位置。
length  - 要复制的数组元素的数量。
import java.util.Arrays;

public class TestArrayCopy {
    public static void main(String args[]) {
        String[] s = {"Microsoft", "IBM", "Sun", "Oracle", "Apple"};
        String[] sBak = new String[6];
        System.arraycopy(s, 0, sBak, 0, s.length);

        System.out.println("sBak: " + Arrays.toString(sBak));
        sBak[4] = "Google";
        System.out.println("sBak: " + Arrays.toString(sBak));
        System.out.println("s: " + Arrays.toString(s));

        System.out.println();

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

        System.out.println("intArrayBak: " + Arrays.deepToString(intArrayBak));
        intArrayBak[2][1] = 100;
        System.out.println("intArrayBak: " + Arrays.deepToString(intArrayBak));
        System.out.println("intArray: " + Arrays.deepToString(intArray));

        System.out.println();

        User[] users = {new User(1, "马士兵"), new User(2, "白鹤翔"),
                new User(3, "左程云"), new User(4, "JavaScript权威指南"),
                new User(5, "Java并发编程的艺术")};
        User[] usersBak = new User[6];
        System.arraycopy(users, 0, usersBak, 0, users.length);

        System.out.println("usersBak: " + Arrays.toString(usersBak));
        usersBak[2].setName("bhx");
        System.out.println("usersBak: " + Arrays.toString(usersBak));
        System.out.println("users: " + Arrays.toString(users));
    }
}

class User {
    private Integer id;
    private String name;

    public User() {
    }

    public User(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "
id: " + id + " name: " + name;
    }
}

原文地址:https://www.cnblogs.com/hgnulb/p/11377852.html