`
Yinny
  • 浏览: 295752 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

System.arraycopy

 
阅读更多
在JAVA里面,可以用复制语句"A=B"给基本类型的数据传递值,但是如果A,B是两个同类型的数组,复制就相当于将一个数组变量的引用传递给另一个数组;如果一个数组发生改变,那么引用同一数组的变量也要发生改变.
以下是归纳的JAVA中复制数组的方法:

1.使用FOR循环,将数组的每个元素复制或者复制指定元素,不过效率差一点
2.使用clone方法,得到数组的值,而不是引用,不能复制指定元素,灵活性差一点
3.使用System.arraycopy(src, srcPos, dest, destPos, length)方法,推荐使用

举例:
1.使用FOR循环
int[] src={1,3,5,6,7,8};
int[] dest = new int[6];
for(int i=0;i<6;i++) dest[i] = src[i];
2.使用clone
int[] src={1,3,5,6,7,8};
int[] dest;
dest=(int[]) src.clone();//使用clone创建
副本,注意clone要使用强制转换

3.使用System.arraycopy
int[] src={1,3,5,6,7,8};
int[] dest = new int[6];

System.arraycopy(src, 0, dest, 0, 6);

-------------------------------------------------------------------
System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制.
其函数原型是:
   public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
arraycopy方法是一个本地方法,
src:源数组; srcPos:源数组要复制的起始位置;
dest:目的数组; destPos:目的数组放置的起始位置;
length:复制的长度.

如果需要将来源数组和目的数组都指定为同一个数组,或是说引用到同一个数组时,Java会复制一份临时数组,然后根据参数的要求,再从刚才产生的临时数组拷贝回来,所以不会造成读和写的冲突。

注意:src and dest都必须是同类型或者可以进行转换类型的数组.
有趣的是这个函数可以实现自己到自己复制,
比如:int[] fun ={0,1,2,3,4,5,6};
System.arraycopy(fun,0,fun,3,3);

则结果为:{0,1,2,0,1,2,6};
分享到:
评论
1 楼 ih0qtq 2012-07-13  

相关推荐

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

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

    System.arraycopy和Arrays.copyOf

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

    使用System.arraycopy()实现数组之间的复制

    使用System.arraycopy()实现数组之间的复制

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

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

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

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

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

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

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

    我们首先创建了一个新的字符串数组 c,然后使用 System.arraycopy 方法将数组 a 和 b 的元素复制到数组 c 中。 代码实现: ```java public static String[] getThreeArray() { String[] a = {"0", "1", "2"}; ...

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

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

    Java数组倒置源代码

    总结来说,Java数组倒置可以通过多种方式实现,包括使用for循环、`System.arraycopy()`以及Java 8的流API。每种方法有其适用场景和优缺点,开发者应根据实际需求选择合适的方法。在实际开发中,理解并掌握这些基本...

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

    例如,如果你需要复制一个整型数组,避免使用for循环,而是直接调用`System.arraycopy(array1, 0, array2, 0, array1.length)`,这样可以减少不必要的CPU和内存开销。 以上四个优化技巧都是Java开发中常见的性能...

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

    这是通过创建一个新的足够大的字节数组`data3`来实现的,其长度等于`data1`和`data2`的长度之和,然后利用`System.arraycopy()`方法将`data1`和`data2`的内容复制到新数组中。 ```java public static byte[] ...

    Java数组倒置.zip

    总的来说,Java中数组倒置有多种实现方式,包括使用两个指针交换元素、使用`System.arraycopy`复制元素以及对ArrayList使用`Collections.reverse`。理解这些方法可以帮助开发者根据具体需求选择最合适的方式来处理...

    IO流的使用,自己的心得

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

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

    例如,`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()`方法或创建一个新的数组并遍历两个原始数组来完成此操作。假设我们有两个整型数组`int[] array1`和`int[] array2`,我们可以这样做: ```java int[] combinedArray = new ...

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

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

    Java程序将一个数组的所有元素复制到另一个数组.docx

    Java编程语言中,数组是一种非常基础且重要的...对于大数组或需要复制部分数组的情况,`System.arraycopy()` 和 `Arrays` 类的方法可能更为高效。理解这些复制方法的原理和差异是编写健壮、无副作用的Java代码的关键。

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

    在Java数组复制方法中,效率最高的方法是System.arraycopy。 提到的Java代码中存在空指针异常的情况,但通过测试发现这段代码可以正常运行,因为Java的静态方法可以在类被加载的时候调用,即使它所属的对象是空...

    java培训教程教学课件

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

Global site tag (gtag.js) - Google Analytics