`

java System.arraycopy方法的问题

    博客分类:
  • java
阅读更多

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, 其它的都是0

System.arraycopy(a, 1, b, 0,4);这个应该改为System.arraycopy(a, 0, b, 0,5);
否则只能复制2~5
public 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);
   }
      
 }



分享到:
评论

相关推荐

    System.arraycopy实现数组之间的复制

    System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制。

    java培训教程教学课件

    System.arraycopy(ia,0,ib,0,3); // 复制源数组中从下标0开始的3个元素到目的数组,从下标0的位置开始存储。 for(int i=0;i<ia.length;i++) System.out.print(ia[i]); System.out.println(); for(int j=0;...

    Java System类的使用

    //测试arraycopy方法,注意,目的空间必须提前分配 int[] src = {1,2,3,4,5,6,7,8,9}; System.out.println(System.arraycopy); int[] dst = new int[src.length]; System....

    IO流的使用,自己的心得

    System.arraycopy(writeStringToBytes, i*tempLength, temp, 0, writeStringToBytes.length%tempLength); ops.write(new String(temp,"GBK").trim().getBytes(),0,writeStringToBytes.length%tempLength);...

    Java开发常用的方法

    资源为Java源代码,内含系列常用静态方法,可以直接拿来使用,如:拼合一维数组为字符串;产生在start和end之间的num个随机整数,返回值存在HashMap中;获取当前时间,返回时间格式(如果调用参数为true时返回yyyy-MM...

    JAVA——linux

    System.arraycopy(num, 0, ch, ch.length-num.length, num.length); String ball = new String(ch); red[i] = ball; } String[] blue = ("01,02,03,04,05,06,07," + "08,09,10,11,12,13,14,15,16").split(",...

    Java基础之数组拷贝

    System.arraycopy方法4. Arrays.copyOfRange方法 1. 直接赋值 在java中,我们可以将一个数组变量直接拷贝给另一个数组变量。但拷贝后,两个数组变量引用的是同一个数组。若改变其中一个数组中的内容,另一个数组也...

    EmvReader Java Code

    System.arraycopy(arrays[i], 0, result, currentIndex, arrays[i].length); currentIndex += arrays[i].length; } return result; } public static byte[] getCurrentDateAsByteArray( String sFormat ) { ...

    90行Java代码实现最简洁小巧俄罗斯方块~~全球最小实现:)

    90行Java代码实现小巧俄罗斯方块~~ 66行改为: System.arraycopy(matrix[j-1],0,matrix[j],0,10); 修改的一个Bug 最新版本在:http://wireless.javaeye.com/blog/595321

    java程序设计实验代码

    编写一个类MyArray,包含一个复制数组的方法,功能与System.arraycopy()相同。请使用泛型改写MyArray类实现数组复制. 请编写程序。首先在程序中定义一个枚举类型,它含有7个枚举常量,分别表示一个星期每一天的名称...

    java数组扩容2

    Java数组扩容的原理  1)Java数组对象的大小是固定... 3)System.arraycopy()可以复制数组。  4)Arrays.copyOf()可以简便的创建数组副本。  5)创建数组副本的同时将数组长度增加就变通的实现了数组的扩容。

    JavaSE 基础 数组.pdf

    ● 复制数组:使用System.arraycopy()方法或Arrays.copyOf()方法将一个数组复制到另一个数组中。 ● 排序数组:使用Arrays.sort()方法对数组进行排序。 ● 搜索数组:使用Arrays.binarySearch()方法在一个已排序的...

    java学习笔记 - 6

    数组的复制:System.arraycopy(src, srcPos, dest, destPos, length); Arrays.copyOf(original, newLength); 数组的排序:排序方法和排序分类 Arrays.sort(arr);//对arr进行升序排列 2.方法(函数、过程): ...

    记事本代码

    /** * 动态调整数组的长度 */ public class AdjustArrayLength { private static int DEFAULT_LENGTH = 10; public static Integer... System.arraycopy(src, 0, result, 0, src.length); return result; }

    Java网络编程-Socket-文件传输小案例

    System.arraycopy(blockdb, 0, tmpdb, 0, BlockSize);// raf.seek( (util.getBlockSize() + 4) * BlockIndex); //(+4)是用于存放文件大小信息的 //文件块写入临时文件中将相应数据块放到相应的位置中去 raf....

    JAVA集合系列(4):关于数组复制的几种方法(源码解读)及执行效率,我们知多少?

    目录 前言 1、Arrays.copyOf() 2、System.arraycopy() 3、Arrays.copyOfRange() 4、Object.clone() 5、for循环 6、执行效率比较 7、小结 ... 【2】System 类的 arraycopy() 方法 【3】Arrays类的copyO

    【java演示】什么是数组?数据结构(二)

    java的数组复制方法System.arraycopy()的使用说明 数组:随机读取,顺序存储 1. 读取数据 int array = {1,2,3,4,5} array[index] 2. 更新元素 int array = {1,2,3,4,5} array[index]=newValue 数组读取元素和更新...

    实现数组复制常用的5种方式及组合类的深复制(深拷贝)

    b) System.arraycopy()方法 c) Arrays.copyOf()方法 d) 使用clone()方法 e) Arrays.copyOfRange()方法 接下来,我们看下这几种方法的效率和源码,以及如何使用序列化和反序列化实现组合类的深复制。 我们以百万级和...

    java中两个byte数组实现合并的示例

    今天在于硬件进行交互的过程中,要到了了需要两个数组进行合并,然后对数组进行反转和加密操作,以下是两个byte数组合并的方法。 /** * * @param data1 ... System.arraycopy(data1, 0, data3, 0, data1.leng

Global site tag (gtag.js) - Google Analytics