`
blue2048
  • 浏览: 183197 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Arrays.copyof 和 System.arraycopy区别

jdk 
阅读更多
jdk里有两个复制数组的方法
一个是底层native的 System.arraycopy
一个Arrays里的一系列重写的copyof

二者有什么关系,我们应该用哪个呢?上段源码就明白了

public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) {  
        T[] copy = ((Object)newType == (Object)Object[].class)  
            ? (T[]) new Object[newLength]  
            : (T[]) Array.newInstance(newType.getComponentType(), newLength);  
        System.arraycopy(original, 0, copy, 0,  
                         Math.min(original.length, newLength));  
        return copy;  
    }  


Arrays里的copyof是为我们做了数组元素类型转换的工作,底层封装了高效的System.arraycopy而已
分享到:
评论

相关推荐

    System.arraycopy和Arrays.copyOf

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

    Java Arrays.asList使用方法解析

    System.arraycopy(this.a, 0, a, 0, size); if (a.length &gt; size) a[size] = null; return a; } @Override public E get(int index) { return a[index]; } @Override public E set(int index, E ...

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

    通常,`System.arraycopy()`和`Arrays.copyOf()`由于其底层优化,被认为是最快的复制方法。 在实际开发中,选择哪种复制方法取决于具体需求。理解这些复制方式及其差异是提高Java编程技能的关键。通过学习和熟练...

    java performance12

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

    拼接byte数组

    `Arrays.copyOf()`可以方便地创建一个新的数组,长度为原数组长度加上指定值,然后将原数组的所有元素复制过去。但这种方法需要两次调用,先扩展原数组,再复制元素: ```java byte[] arr1 = ...; byte[] arr2 =...

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

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

    java 复制数组的资源

    - `System.arraycopy()`:这是Java中最直接、最高效的方式来复制数组。它会创建一个新的数组,并将源数组中的元素值逐个复制到新数组中。这种方法适用于基本类型数组和对象数组,但只复制数组的引用,不复制对象的...

    数组的深拷贝与浅拷贝以及数组拷贝的几种方式比较

    目录一、深拷贝与浅拷贝解析浅拷贝深拷贝二、数组拷贝的方式1.for循环来拷贝2.System.arraycopy( )拷贝3.Arrays.copyOf( )拷贝4.clone( )拷贝5.解释三、四种拷贝方式效率比较1. System.arraycopy( )2.Arrays.copyOf...

    Java基础之数组拷贝

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

    Java 的常用包与数组的复制与排序26

    1. **System.arraycopy()**:这是最直接且效率高的方法,可以复制任意类型的数组,例如: ```java int[] original = {1, 2, 3}; int[] copy = new int[original.length]; System.arraycopy(original, 0, copy, 0...

    java-Vector类源代码与分析.docx

    } elementData = Arrays.copyOf(elementData, newCapacity); } } // 向 Vector 的末尾添加一个元素 public synchronized void add(E e) { modCount++; ensureCapacityHelper(elementCount + 1); elementData...

    java学习笔记 - 6

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

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

    1、Arrays.copyOf() 2、System.arraycopy() 3、Arrays.copyOfRange() 4、Object.clone() 5、for循环 6、执行效率比较 7、小结 前言 在Java中,如果A、B是基本的数据类型,可以用赋值的方式传递值。如果A、B是两个...

    java基本知识整理

    - 使用`System.arraycopy()`方法复制数组,格式如下:`System.arraycopy(源数组,源数组的起始位置,目标数组,目标数组的起始位置,要复制数组元素个数)`。 - 示例:`int[] a = {10, 2, 12, 34, 16, 60}; int[] ...

    JavaSE.docx

    * 数组的拷贝(Arrays.copyOf() 和 System.arraycopy()) 方法 * 方法的声明和调用 * 方法的参数和返回值 * 方法的重载和重写 面向对象基础 * 类和对象的概念 * 属性和行为的概念 * 类的继承和多态性 面向对象...

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

    在性能测试中,`System.arraycopy()`表现最优,其次是`clone()`方法,而`Arrays.copyOf()`和`Arrays.copyOfRange()`的效率相近,均优于for循环。在实际应用中,应根据具体需求选择合适的复制方法。

    12道不错的数组例题

    - `Arrays.copyOf()`和`Arrays.copyOfRange()`用于创建数组的副本,前者复制整个数组,后者复制指定范围。 7. **数组作为方法参数**: - 在方法签名中,数组被视为对象,因此可以作为参数传递。在方法内部,数组...

    Java数组-学习笔记.docx

    - 使用 `System.arraycopy()` 方法或 `Arrays.copyOf()` 方法复制数组。 - 如果复制的目标数组长度小于原数组,则多余部分会被截断;如果大于原数组,则多余部分会被填充默认值(如整型为0)。 例如: ```java int...

    编程思维的培养和经典案例

    这里`System.arraycopy`的第一个参数是要复制的源数组,第二个参数是源数组的起始索引,第三个参数是目标数组,第四个参数是目标数组的起始索引,第五个参数是要复制的元素数量。 - **使用`Arrays.copyOf`方法**:...

Global site tag (gtag.js) - Google Analytics