黑马程序员技术交流社区

标题: Arraycopy()方法实现数组复制的一点小问题 [打印本页]

作者: 杨胜利    时间: 2012-7-19 22:47
标题: Arraycopy()方法实现数组复制的一点小问题
本帖最后由 杨胜利 于 2012-7-20 00:46 编辑

程序代码如下:
package java04;
public class ArrayCopySystem
{
/**
  * 使用System类所提供的Arraycopy()方法实现数组复制
  */
public static void main(String[] args)
{
  int[] arr1 = {1,2,3,4,5};
  int[] arr2 = new int[5];
  System.out.println("复制开始之前arr2中元素为:");
  for(int i=0; i<arr2.length; i++)
  {
   System.out.println(arr2+" ");
  }
System.arraycopy(arr1,0,arr2,0,arr1.length);
  System.out.println();  //回车换行
  //将第一个数组从0位置开始的所有元素复制到第二个数组的0开始位置
  System.out.println("数组arr1中数据复制到数组arr2中后arr2中元素为:");
  for(int i=0; i<arr2.length; i++)
  {
   System.out.println(arr2+" ");
  }
  System.out.println();
}
}
问题:System.arraycopy(arr1,0,arr2,0,arr1.length);这行代码是什么意思?
         arr1,0,arr2,0,arr1.length分别代表什么?
  

作者: 程潇    时间: 2012-7-19 22:58
arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 是类java.lang.System中的静态方法
其作用是从指定的源数组的指定位置开始拷贝数组,拷贝到目的数组的指定位置
其各个参数含义如下:
    src - 源数组
    srcPos - 源数组中要拷贝的起始位置
    dest - 目的数组
    destPos - 要拷贝到的目的数组的起始位置
    length - 要拷贝的数组元素的个数

建议:看到不熟悉的类或方法,多查查API
作者: 陈欢    时间: 2012-7-19 23:02
本帖最后由 陈欢 于 2012-7-19 23:05 编辑

System.arraycopy(arr1,0,arr2,0,arr1.length);
  System.out.println();  //回车换行
  //将第一个数组从0位置开始的所有元素复制到第二个数组的0开始位置
  System.out.println("数组arr1中数据复制到数组arr2中后arr2中元素为:");
  for(int i=0; i<arr2.length; i++)
  {
   System.out.println(arr2+" ");
  }
  System.out.println();
}

System.arraycopy(arr1,0,arr2,0,arr1.length)表示:把arr1中从arr1[0]开始的元素复制到arr2中,且arr2[0]复制到arr2[0]位置,复制的长度是arr1的长度即arr1中所有元素都复制过去.
该方法中第一参数是要复制的数组,第二个参数是要复制数组的起始位置,第三个参数是复制的目标数组,第四个参数是复制到目标数组的其始位置,第五个参数是要复制的数组的长度
}


我认为就是这样的,之前也查过这方面的资料,希望可以帮到你




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2