11.数组元素拷贝
源:
int[] src = {1,3,5,7,9,11};
目标:
int[] dest = new int[10];
需求:把src数组中指定的几个元素拷贝到dest数组中.
----------------------------------------------------------
参数:
src :源,从哪个数组中拷贝数据
dest:目标,把数据拷贝到哪一个数组中
srcPos:从源数组中的哪一个位置开始拷贝.
destPos:在目标数组中开始存放的位置.
length:拷贝几个元素
void arraycope(int[]src,int srcPos,int[] dest,int destPos,int length){...}
调用:
arraycope(src,1,dest,3,4);
----------------------------------------------------------
上述的数组元素拷贝只能运用于int类型数组,我们在开发中会遇到各自数据类型的数组.
有人就想:有多少数据类型就重载多少次arraycope方法,不就OK了吗?
----解决方案:如此常用的一个功能,Java的大神们早就设计好了,并且把该功能方法存放在System类中.
基本使用:
System.arraycopy(src,1,dest,3,4);
可以拷贝任意类型是数组元素.
11.1操作int类型数组
public static void main(String[] args) {
int[] src = {1,3,5,7,9,11};
int[] dest = new int[10];
for (int i : dest) {
System.out.print(i+" , ");
}
System.arraycopy(src,0,dest,1,5);
System.out.println();
for (int i : dest) {
System.out.print(i+" , ");
}
}
11.2操作对象类型数组
public static void main(String[] args) {
User u1 = new User("haha",1);
User u2 = new User("hehe",3);
User u3 = new User("xixi",5);
User u4 = new User("aaaa",7);
User[] src = {u1,u2,u3,u4};
User[] dest = new User[10];
for (User i : dest) {
System.out.print(i+" , ");
}
System.arraycopy(src,1,dest,7,3);
System.out.println();
for (User i : dest) {
System.out.print(i+" , ");
}
}
class User{
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}