![](https://img2018.cnblogs.com/blog/1306719/201908/1306719-20190819161804821-531718871.png)
![](https://img2018.cnblogs.com/blog/1306719/201908/1306719-20190819161853508-1711000554.png)
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://img2018.cnblogs.com/blog/1306719/201908/1306719-20190819214950644-1186778211.png)