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;
}
}