java语言中的数组(五)

7.类Arrays

java语言中经常需要复制数组或者数组的一部分。对于这种情况,我们可以自己写一个方法来实现复制,也可以调用java中的标准类库中的Arrays.copyOf和Arrays.copyOfRange方法。

方法Arrays.copyOf被重载可以用于任意类型的数组,它从数组的第一个元素开始将值赋给新的数组,直到指定的个数为止。即:

int [] arr={2,5,4};

int[] arr1=Arrays.copyOf(arr,arr.length);

上面复制的结果是将arr中的元素全部复制到arr1,第一个参数是表示复制的目标,第二个元素是表示要复制的个数。这个参数可以与目标数组中的元素个数不同,可以大于目标数组中的元素个数,新数组中的多出的元素将被赋为默认值。若是小于目标数组中的元素个数,就复制前面的个数。

如果要复制的是数组的一部分,推荐使用copyOfRang方法,这个方法也被重载,可以创建一个任何类型的新数组。它从数组的第一个元素开始将值赋给新的数组,直到指定位置为止(包含头不包含尾)。例如;

int[] arr={2,5,4,8};

int[] arr2=Arrays.copyOfRang(arr,1,3);

数组arr2中元素为5,4,,也就是所谓的包含头不包含尾。这个方法的第三个参数指定的是数组的下标,但是不复制这个元素。

需要注意的是,这两个数组复制方法都是浅复制,也就是说当复制多维数组时只会复制数组的引用,不会复制对象的本身。因此复制后得到的数组跟原来的数组是同一对象,当对象发生改变时,两个数组也会随之而变。

从javaSE6后,java类库中有提供新的数组复制方法:Arrays.copyarray这个不符合java命名规范。该方法的格式如下 :

public  static void copyarray(Object scr,int srcPos,Object dest,int destPos,int length)

其中参数scr,dest,分别表示的是源数组和目标数组,scrPos和destPos表示源数组和目标数组的起始位置,length表示的是复制元素的个数。

copyarray方法不会为数组非配内存空间,所以在复制数组前一定要创建数组。

int[] arr={2,5,4,8};

int[] arr3=new int[arr.length+2];

int[] arr2=Arrays.copyOfRang(arr,0,arr2,1,5);

而多维数组是一个对象,所以可以调用从Object类中的继承的方法clone。在java中copyarry和clone都是浅复制。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值