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

Java的拷贝数组方法: System.arraycopy()

阅读更多
以前常常会遇到将java中的两个数组合并成一个的需求,解决办法很傻瓜, 创建一个新的数组,用for语句把两个数组中的item都拷贝到新的中。

这样不仅性能不好,而且代码很丑。

今天在看HttpServlet的源码时,看到这么一段:
Method[] parentMethods = getAllDeclaredMethods(c.getSuperclass());
Method[] thisMethods = c.getDeclaredMethods();
if ((parentMethods != null) && (parentMethods.length > 0)) {
  Method[] allMethods =
     new Method[parentMethods.length + thisMethods.length];
  System.arraycopy(parentMethods, 0, allMethods, 0,
     parentMethods.length);
System.arraycopy(thisMethods, 0, allMethods, parentMethods.length,
     thisMethods.length);

thisMethods = allMethods;


我试图去查看System.arraycopy这个方法的源码,却发现是一个native方法,也就是根据系统来实现的底层代码。

根据一贯的想法,底层代码实现的方法通常都比较快。 所以我认为这个方法还是非常适合被加入程序员的工具库里面的。
分享到:
评论

相关推荐

    dotnet 6 数组拷贝性能对比.rar

    1. **System.arraycopy()**:这是一个高效的内置方法,用于从一个数组的指定位置复制元素到另一个数组。 2. **clone()**:与C#的Array.Clone()类似,它创建数组的浅拷贝。 3. **赋值运算符(=)**:与C#的情况一样...

    使用循环操作Java中的数组共3页.pdf.zip

    - `System.arraycopy()`方法用于将一个数组的一部分或全部复制到另一个数组。 - `clone()`方法可以创建数组的浅拷贝。 7. **数组的排序**: - 对于基本类型数组,可以使用Arrays类提供的`sort()`方法进行排序。 ...

    Java数组练习题目.pdf

    2. 数组复制:`System.arraycopy()`方法用于将一个数组的元素复制到另一个数组。例如,`System.arraycopy(src, srcPos, dest, destPos, length)`,将源数组src从srcPos位置开始的length个元素复制到目标数组dest的...

    第三章JAVA 中的数组及字符串.doc

    数组之间的复制可以通过元素逐个复制实现,或者使用系统提供的`System.arraycopy()`方法。 在Java中,`ArrayList`是`java.util`包中的一种动态数组,它可以自动调整大小以适应更多的元素。`ArrayList`的主要方法...

    Java中的二维数组共4页.pdf.zip

    - **拷贝和复制**:可以使用System.arraycopy()方法实现二维数组的部分或全部拷贝。 - **排序**:对二维数组中的元素进行排序,可能需要自定义比较规则。 - **查找和替换**:在二维数组中查找特定值并进行替换,...

    Java中数组的声明.doc

    在Java中,复制数组最常用的方法是使用`java.lang.System`类中的`arraycopy`方法。该方法可以高效地将一个数组的一部分或全部复制到另一个数组中。 **方法签名**: ```java public static void arraycopy(Object ...

    java 数组 PPT

    2. 深拷贝与浅拷贝:数组拷贝有深拷贝(复制整个数组及其中的元素)和浅拷贝(只复制数组引用)之分,使用`System.arraycopy()`方法可以实现深拷贝。 3. 排序:Java的`Arrays`类提供了对数组进行排序的方法,如`...

    记事本代码

    /** * 动态调整数组的长度 */ public class AdjustArrayLength { private static int DEFAULT_LENGTH... //这是一种常用的拷贝数组的方法 System.arraycopy(src, 0, result, 0, src.length); return result; }

    第03讲 JAVA数组.ppt

    数组拷贝可以通过赋值操作或者使用`System.arraycopy()`方法实现。赋值操作(如`bb = aa`)只会让两个数组引用指向同一块内存,而`System.arraycopy()`方法则会真正复制数组的内容到另一块内存。 在处理大量数据时...

    java编程中拷贝数组的方式及相关问题分析

    Java编程中拷贝数组的方式有多种,主要可以分为四种方式:利用for循环、直接赋值、利用Arrays的copyof方法和System.arraycopy方法。 第一种方式:利用for循环 这是一种最基本的数组拷贝方式,通过循环遍历源数组,...

    Java_数组练习答案 (2).docx

    11. **array copy()方法**:`System.arraycopy()`方法用于复制数组的部分或全部,最后一个参数指定了要复制的元素个数。 12. **方法参数传递**:在Java中,向方法传递数组参数时,传递的是数组的引用,而不是复制...

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

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

    java数组

    `System.arraycopy()`方法用于高效地复制数组的一部分或全部到另一个数组: ```java int[] copy = new int[numbers.length]; System.arraycopy(numbers, 0, copy, 0, numbers.length); ``` 总结,Java数组作为基本...

    java数组练习题目 (2).docx

    Java中可以直接通过方法`System.arraycopy()`复制数组,无需下标变量。数组的最小下标是0。`arraycopy()`的最后一个参数指明复制的元素数量。当向方法传递数组参数时,传递的是数组的引用,而非副本。线性查找法的...

    Java数组练习题.docx

    20. **数组复制**:`arraycopy()`方法用于复制数组,如`arraycopy(source, srcPos, dest, destPos, length)`。 21. **默认值**:关于数组默认值,错误的是A. `char`类型的默认值是`'\u0000'`,并非`"u0000"`。 22....

    java 复制数组的资源

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

    Java中的数组复制(clone与arraycopy)代码详解

    clone方法是Object类的protected方法,用于创建对象的副本,而arraycopy是System类的静态方法,用于将一个数组的内容复制到另一个数组中。 1. clone方法: clone方法是Object类的protected方法,用于创建对象的...

    java 一维数组的创建与使用

    2. **数组拷贝**:`System.arraycopy()`方法可以用来复制数组的一部分或全部。 3. **数组比较**:虽然数组本身是对象,但比较两个数组是否相等时,需要注意的是它们的引用是否相同,而非内容是否一致。若要比较内容...

    java 二维数组的创建与使用

    如果需要复制一个二维数组,可以使用`System.arraycopy()`方法,但需要注意是逐行复制。 ### 5. 示例代码 `TwoArray_01.java` `TwoArray_01.java` 文件可能包含了如下示例代码,展示了二维数组的创建、初始化和...

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

    `System.arraycopy()` 是一个专门用于数组之间复制的高效方法。它接受五个参数:源数组、源数组的起始索引、目标数组、目标数组的起始索引以及要复制的元素数量。 ```java int[] a = { 1, 8, 3 }; int[] b = new...

Global site tag (gtag.js) - Google Analytics