System.arraycopy的测试

ArrayList的源码中数组的拷贝用到该方法:

public static void arraycopy(Object src, --源数组
int srcPos, --源数组要复制的起始位置
Object dest, --目的数组;
int destPos, --目的数组放置的起始位置;
int length) --length:复制的长度(源数组)。

 对于基本类型来说:

int[] is = {1,2,3,4,5}; 
int[] is2 = {4,0,9};
System.arraycopy(is, 2, is2, 1, 2);
is[2] = 99;
System.out.println("is=" + Arrays.toString(is));
System.out.println("is2=" + Arrays.toString(is2));

运行结果:

is=[1, 2, 99, 4, 5]
is2=[4, 3, 4]

对于引用类型来Person:

class Person {
    String name;
    Person(String n) {
        this.name = n;
   }
public String toString() {
        return "Person [name=" + name + "]";
    }
}

引用类型测试:

        Person[] p1 = {new Person("A"),new Person("B"),new Person("C")};
        Person[] p2 = new Person[4];
        p2[0] = new Person("kaixin");
        System.arraycopy(p1, 0, p2, 1, p1.length);
        System.out.println("改变前p1=" + Arrays.toString(p1));
        System.out.println("改变前p2=" + Arrays.toString(p2));
        p1[1].name = "CCCCC";
        System.out.println("改变后p1=" + Arrays.toString(p1));
        System.out.println("改变后p2=" + Arrays.toString(p2));

 

引用类型测试结果:

改变前p1=[Person [name=A], Person [name=B], Person [name=C]]
改变前p2=[Person [name=kaixin], Person [name=A], Person [name=B], Person [name=C]]
改变后p1=[Person [name=A], Person [name=CCCCC], Person [name=C]]
改变后p2=[Person [name=kaixin], Person [name=A], Person [name=CCCCC], Person [name=C]]

 

转载于:https://www.cnblogs.com/startSeven/p/10176762.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值