首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 系统运维 >

java System.arraycopy方法的有关问题

2012-09-18 
java System.arraycopy方法的问题public static void main(String[] args) { int[] a{1,2,3,4,5} int[]

java System.arraycopy方法的问题

public static void main(String[] args) { int[] a={1,2,3,4,5}; int[] b=new int[10]; for (int i : b) {  b[i]=0; }    System.arraycopy(a, 1, b, 0,4);    for (int i : b) {  System.out.println(b[i]); }    }我想把1~5 复制到数组B的前5个位置 但显示的结果是 2345011111 这是怎么回事?求解释
解答:
有几个小问题哦。。。。 for (int i : b) {  b[i]=0; }这样的赋值是不对的。。。。。数组b 的初值都是0,而for (int i : b)表示的意思是依次取b中的每个值,而b里面的值都是0,所以无论循环多少次,执行的都是同一条语句b[0] = 0;如果是 for (int i : b) {  b[i]=1; }只有b[0] = 1, 其它的都是0System.arraycopy(a, 1, b, 0,4);这个应该改为System.arraycopy(a, 0, b, 0,5);否则只能复制2~5public static void arraycopy(Object src,                             int srcPos,                             Object dest,                             int destPos,                             int length)参数:src - 源数组。srcPos - 源数组中的起始位置。dest - 目标数组。destPos - 目标数据中的起始位置。length - 要复制的数组元素的数量。   for (int i : b) {  System.out.println(b[i]);这个应该改成  for (int i : b) {  System.out.println(i);最后修改后的代码如下,我已经测试过了。。public static void main(String[] args) {   int[] a={1,2,3,4,5};   int[] b=new int[10];   for (int i : b) {    b[i]=0;   }      System.arraycopy(a, 0, b, 0,5);      for (int i : b) {    System.out.print(i);   }       }

热点排行