`

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实现数组之间的复制

    在Java编程语言中,`System.arraycopy()`是一个非常实用且高效的方法,用于在数组之间复制元素。此方法属于`java.lang.System`类,并且是一个静态方法,这意味着可以直接通过`System`类名调用它,而无需创建`System`...

    System.arraycopy和Arrays.copyOf

    `System.arraycopy` 和 `Arrays.copyOf` 都是Java中用于复制数组的方法,但它们在使用和处理异常情况上有所不同。这两个方法在处理数组复制时,提供了便利和效率,但各有其适用场景。 `System.arraycopy` 是一个...

    详解Java合并数组的两种实现方式

    在Java中有多种方式可以实现数组合并,本文将介绍两种常见的实现方式,即使用System.arraycopy()方法和ArrayUtils.addAll()方法。 1. System.arraycopy()方法 System.arraycopy()方法是Java提供的一种本地方法,...

    合并两个数组的Java程序.docx

    本篇文章将介绍两种方法来合并两个数组,一种是使用Java内置的`System.arraycopy()`函数,另一种是不使用预定义函数,而是通过手动遍历来实现。 首先,让我们详细讨论使用`System.arraycopy()`的方法。这个方法是从...

    「java三种字符数组合并的方法」.docx

    在第三个方法中,我们使用了 System.arraycopy 方法来实现数组合并。我们首先创建了一个新的字符串数组 c,然后使用 System.arraycopy 方法将数组 a 和 b 的元素复制到数组 c 中。 代码实现: ```java public ...

    java三种字符数组合并的方法.doc

    这三种方法分别是:使用循环手动填充新数组、利用`List`集合进行合并再转换为数组以及直接使用`System.arraycopy()`方法。此外,还将涉及如何合并不同类型的数组,如字符数组与整型数组。 ### 方法一:使用循环合并...

    Java ArrayList.add 的实现方法

    需要注意的是,在 add(int index, E element) 方法中,我们使用 System.arraycopy 方法来复制数组元素,这是一个 native 方法,它的实现是基于 C++ 语言的。很多人认为 System.arraycopy 方法是调用底层的 memcpy ...

    Java数组倒置.zip

    数组倒置也可以使用Java的`System.arraycopy`方法来实现,这种方法更加简洁高效: ```java public class C { public static void main(String[] args) { int[] array = {1, 2, 3, 4, 5}; reverseArray(array); ...

    2022年计算机二级考试java章节辅导数组元素的复制.docx

    数组元素的复制通常有两种方式:使用循环进行逐个元素的复制,以及使用Java提供的`System.arraycopy()`方法。 首先,我们来探讨一下使用循环复制数组元素的方法。例如,当我们有一个已经初始化的数组`a`,我们想要...

    Java数组倒置源代码

    另一种方法是使用Java的`System.arraycopy()`函数,它可以高效地复制数组的一部分。在数组倒置的情况下,我们可以先创建一个临时数组,然后使用`arraycopy()`将原数组的后半部分复制到临时数组,再将原数组的前半...

    java反射操作父类所有属性和方法

    ### Java反射操作父类所有属性和方法 #### 一、引言 在Java编程语言中,反射(Reflection)是一项强大的特性,它允许程序在运行时动态地获取类的信息,并能够直接操作这些信息。通过反射,我们可以获取类的字段、...

    第03讲 JAVA数组.ppt

    赋值操作(如`bb = aa`)只会让两个数组引用指向同一块内存,而`System.arraycopy()`方法则会真正复制数组的内容到另一块内存。 在处理大量数据时,Java集合框架中的`ArrayList`和`LinkedList`等集合类通常比数组更...

    java.lang.System类.pdf

    Java中的`java.lang.System`类是Java核心库中不可或缺的一部分,它是系统级操作的主要入口点。这个类提供了很多静态字段和...理解并熟练使用`System`类的各种方法,可以帮助开发者更好地操控Java程序与系统资源的交互。

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

    总结来说,Java中合并两个`byte`数组可以通过创建新的数组并使用`System.arraycopy()`方法来实现。如果需要进一步处理合并后的数组,如反转或加密,可以分别使用自定义函数或Java内置的加密库。这些操作在处理二进制...

    java高端技术课程--Java数组如何实现复制

    Java提供了System类的arraycopy()方法,它是进行数组复制的最直接和高效的方式。该方法接受五个参数:源数组、源数组起始位置、目标数组、目标数组起始位置和复制的元素数量。例如: ```java int[] srcArray = {1...

    消费者终端云服务java-A-2021.pdf

    至于Java代码中的数组复制效率问题,正确答案是System.arraycopy。另外,关于Java类加载过程的理解,其中不包括int类型对象成员变量赋予默认值。在分布式环境或不同CPU间的通讯中,不同字节序的CPU之间的通讯确实...

    Java程序优化大全[参照].pdf

    `System.arraycopy()`是Java提供的一个高效的方法,用于复制数组。相比使用循环逐个元素复制,`System.arraycopy()`在底层实现上更优化,能提供更好的性能。例如,如果你需要复制一个整型数组,避免使用for循环,...

    java performance12

    这里提到了可以使用 `java.util.Arrays` 和 `java.util.Collections` 提供的方法来实现高效拷贝。下面详细介绍这两种方法: - **使用 `java.util.Arrays.copyOf()`:** `java.util.Arrays.copyOf()` 方法是拷贝...

    java 数组的合并

    1. **使用System.arraycopy()方法**: 这是Java提供的一种内置方法,用于复制数组的一部分到另一个数组。我们可以先创建一个新的大数组,然后通过`System.arraycopy()`将两个小数组的元素复制到新数组中。 ```...

Global site tag (gtag.js) - Google Analytics