• Java中数组复制的几种方法


     1 /**
     2  * @author zhengbinMac
     3  */
     4 public class Test {
     5     public static void main(String[] args) {
     6         int[] array1 = {1,2,3,4,5};
     7         // 1.通过for循环
     8         int[] array2 = new int[5];
     9         for(int i = 0;i < array1.length;i++) {
    10             array2[i] = array1[i];
    11         }
    12         for(int i = 0;i < array2.length;i++) {
    13             System.out.print(array2[i]);
    14         }
    15         System.out.println();
    16         //2.通过System.arraycopy()
    17         int[] array3 = new int[5];
    18         System.arraycopy(array1, 0, array3, 0, 5);
    19         for (int i = 0; i < array3.length; i++) {
    20             System.out.print(array3[i]);
    21         }
    22         System.out.println();
    23         //3.通过Arrays.copyOf()
    24         int[] array4 = new int[5];
    25         array4 = Arrays.copyOf(array1, 5);
    26         for (int i = 0; i < array4.length; i++) {
    27             System.out.print(array4[i]);
    28         }
    29         System.out.println();
    30         //4.通过Object.clone()
    31         int[] array5 = new int[5];
    32         array5 = array4.clone();
    33         for (int i = 0; i < array5.length; i++) {
    34             System.out.print(array5[i]);
    35         }
    36     }
    37 }

    1.for循环方法:

      代码灵活,但效率低。

    2.System.arraycopy()方法:

      通过源码可以看到,其为native方法,即原生态方法。自然效率更高。

    1 public static native void arraycopy(Object src,  int  srcPos,
    2                                         Object dest, int destPos,
    3                                         int length);

    3.Arrays.copyOf()方法:

      同样看源码,它的实现还是基于System.arraycopy(),所以效率自然低于System.arraycpoy()。

    1 public static int[] copyOf(int[] original, int newLength) {
    2   int[] copy = new int[newLength];
    3   System.arraycopy(original, 0, copy, 0,
    4     Math.min(original.length, newLength));
    5   return copy;
    6 }

    4.Object.clone()方法:

      从源码来看同样也是native方法,但返回为Object类型,所以赋值时将发生强转,所以效率不如之前两种。

    1 protected native Object clone() throws CloneNotSupportedException;
  • 相关阅读:
    html中frameset的详细使用方法
    日期控件API
    限制input输入类型(多种方法实现)
    springmvc导出excel并弹出下载框
    Spring mvc 验证码的做法
    Spring Boot 集成MyBatis
    Spring Boot 实践折腾记(三):三板斧,Spring Boot下使用Mybatis
    支付系统架构
    javaScript事件(六)事件类型之滚轮事件
    你不是真正的快乐
  • 原文地址:https://www.cnblogs.com/zhengbin/p/5671403.html
Copyright © 2020-2023  润新知