Java数组元素(基本类型,引用类型)拷贝:System.arraycopy()

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];
        //0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
        for (int i : dest) {
            System.out.print(i+" , ");
        }
        //从src源数组,拷贝到dest目标数组,src源数组不变
        // 从src的0开始,拷贝五个数据到dest目标数组,从dest的索引1开始放
        System.arraycopy(src,0,dest,1,5);
        System.out.println();
        //0 , 1 , 3 , 5 , 7 , 9 , 0 , 0 , 0 , 0 ,
        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];
        //null , null , null , null , null , null , null , null , null , null ,
        for (User i : dest) {
            System.out.print(i+" , ");
        }
        //从src源数组,拷贝到dest目标数组,src源数组不变
        // 从src的0开始,拷贝五个数据到dest目标数组,从dest的索引1开始放
        System.arraycopy(src,1,dest,7,3);
        System.out.println();
        //null , null , null , null , null , null , null , User{name='hehe', age=3} , User{name='xixi', age=5} , User{name='aaaa', age=7} , 
        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;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值