`

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三种字符数组合并的方法」.docx

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

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

    在第三个方法中,我们使用 Java 的 `System.arraycopy` 方法来合并两个字符数组。下面是实现代码: ```java public static String[] getThreeArray() { String[] a = {"0", "1", "2", "3"}; String[] b = {"4", ...

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

    java.lang.System类.pdf

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

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

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

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

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

    大学专业试卷《JAVA》试卷B.doc

    * 在JAVA中,可以使用System.arraycopy()方法将一个数组的元素复制到另一个数组中。 * System.arraycopy()方法的参数包括源数组、源数组的起始索引、目标数组、目标数组的起始索引和要复制的元素个数。 例如,在...

    Java实现把两个数组合并为一个的方法总结

    使用System.arraycopy()方法可以实现数组合并,例如: ```java static String[] concat(String[] a, String[] b) { String[] c = new String[a.length + b.length]; System.arraycopy(a, 0, c, 0, a.length); ...

    Java实验.pdf

    同时,CopyArray.java演示了数组的使用,特别是`System.arraycopy()`方法,用于高效地复制数组元素。此方法可以用于在不同数组间快速移动或复制数据,这对于处理大量数据非常有用。 实验二:类封装与包管理 这个...

    java 数组的合并

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

    一道面试题的代码:数组合并和排序

    在Java中,可以使用`System.arraycopy()`方法或创建一个新的数组并遍历两个原始数组来完成此操作。假设我们有两个整型数组`int[] array1`和`int[] array2`,我们可以这样做: ```java int[] combinedArray = new ...

    数组 简单 插入 删除 复制 操作

    例如,`ArrayCopy.java`文件可能有以下代码: ```java public class ArrayCopy { public static void main(String[] args) { int[] original = {1, 2, 3, 4, 5}; int[] copy = new int[original.length]; // ...

    Java数组相关知识整理

    * 使用System.arraycopy()方法或自定义arraycopy()方法来实现数组的替换复制 * 例如:System.arraycopy(src, 1, dest, 1, 3); * 或者:public static void arraycopy(int[] src, int srcIndex, int[] dest, int ...

    Java程序优化大全.pdf

    `System.arraycopy()`是一个原生方法,它在底层实现上非常高效,用于复制数组的速度远超通过循环逐个元素复制。在需要大量复制数组元素时,优先考虑使用`System.arraycopy()`。如示例中的`IRB`类,使用`System....

    JAVA System、Math、Date、DateFormat、Calendar

    此外,`System.arraycopy()`用于快速复制数组,`System.currentTimeMillis()`返回当前时间的毫秒值,这些都是日常编程中不可或缺的工具。 其次,`Math`类提供了大量的静态方法,用于执行基本的数学运算,如平方根、...

Global site tag (gtag.js) - Google Analytics