java中的arraycopy(),copyOf()和copyOfRange()方法详解

本文详细介绍了Java中常用的三种数组复制方法:arraycopy(), copyOf() 和 copyOfRange()。arraycopy() 方法允许指定源数组、起始位置、目标数组、目标起始位置和复制长度;copyOf() 方法从原数组起始位置开始复制,长度由参数决定;copyOfRange() 方法则可以指定复制的起始和结束下标。

java语言提供了很多的方法来对数组进行复制。其中我们常用的方法有三种,下面一一列举出来

1. arraycopy()方法

函数原型:arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

src: 原数组                                               srcPos:原数组起始的位置

dest:目的数组                                         destPos:目的数组的起始位置

length:所需复制数组的长度

需要注意的是要重新声明一个同类型且长度足够的数组,否则会出现异常。

下面举个例子:


 
  1. package 笔记;
  2. import java.util.Arrays; //注意这里
  3. public class Example5_20_3 {
  4. public static void main(String[] args) {
  5. // TODO Auto-generated method stub
  6. int[] a={ 1, 4, 6, 45, 3, 2, 56, 76, 5, 4, 3, 4, 5, 6};
  7. int[] b= new int[ 8]; //注意数组的长度
  8. System.arraycopy(a, 0, b, 0, 8);
  9. System.out.println(Arrays.toString(b));
  10. }
  11. }

System.arraycopy(a ,0 ,b ,0 ,8)这句话可以翻译为:把数组a从下标为0的位置依次开始复制到数组b下标为0的位置,复制长度为8。

使用arraycopy()方法要实现指明方法的路径,即头文件的import语句。在我们编程过程中不必一条条地去指明路径,我们可以使用快捷键Ctrl+shift+o即可补全所缺的路径。

输出的结果是:[1, 4,  6, 45,  3,  2,  56,  76]

arraycopy()方法的主要缺点是必须事先创建好目的数组。

2.copyOf()方法

函数原型:copyOf(oringinal, int newlength)

oringinal:原数组      newlength:复制数组的长度

这个方法是从原数组的起始位置开始复制,复制的长度是newlength。相比较于前一种,这种相当于特殊的情况,只能从原数组的起始位置开始复制。


 
  1. package 笔记;
  2. import java.util.Arrays;
  3. public class Example5_20_4 {
  4. public static void main(String[] args) {
  5. // TODO Auto-generated method stub
  6. int[] a= { 3, 456, 4, 3, 2, 45, 5, 65, 35, 6, 5, 5, 43};
  7. int[] b= new int[ 8];
  8. b=Arrays.copyOf(a, 8);
  9. System.out.println(Arrays.toString(b));
  10. }
  11. }
输出的结果是:[3, 456, 4, 3, 2, 45, 5, 65]

3.copyOfRange()方法

函数原型:copyOfRange(oringinal,int from, int to)

该方法是从original数组的下标from开始复制,到下标to结束


 
  1. package 笔记;
  2. import java.util.Arrays;
  3. public class Example5_20_5 {
  4. public static void main(String[] args) {
  5. // TODO Auto-generated method stu
  6. int[] a= { 3, 45, 32, 42, 34, 2, 1, 57, 4, 3, 56, 4, 65};
  7. int[] b= new int[ 8];
  8. b=Arrays.copyOfRange(a, 2, 10);
  9. System.out.print(Arrays.toString(b));
  10. }
  11. }

输出的结果:[32, 42, 34, 2, 1, 57, 4, 3, 56]

这几个数组复制方法是我们最常用的方法。方法的函数体都比较简单,只是我们平时遇到这些方法的次数不多,且比较分散,导致很多人对这些方法都不熟悉。现在我把我们最常用的方法给罗列到一起,希望对大家有所帮助。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值