zoukankan      html  css  js  c++  java
  • [java]Arrays.copyOf() VS System.arrayCopy()

    If we want to copy an array, we can use either System.arraycopy() or Arrays.copyOf(). In this post, I use a simple example to demonstrate the difference between the two.

    1. Simple Code Examples

    System.arraycopy()

    int[] arr = {1,2,3,4,5};   
    
    int[] copied = new int[10];
    
    System.arraycopy(arr, 0, copied, 1, 5);//5 is the length to copy   
    
    System.out.println(Arrays.toString(copied));

    Output:

    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    
    [0, 1, 2, 3, 4, 5, 0, 0, 0, 0]
    

    Arrays.copyOf()

    int[] copied = Arrays.copyOf(arr, 10); //10 the the length of the new array
    
    System.out.println(Arrays.toString(copied));   copied = Arrays.copyOf(arr, 3);
    
    System.out.println(Arrays.toString(copied));

    Output:

    [1, 2, 3, 4, 5, 0, 0, 0, 0, 0]
    
    [1, 2, 3]
    

    2. The Major Difference

    The difference is that Arrays.copyOf does not only copy elements, it also creates a new array.System.arrayCopy copies into an existing array.

    If we read the source code of Arrays.copyOf(), we can see that it uses System.arraycopy().

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

  • 相关阅读:
    Linux查看系统信息
    pgrep 和 pkill 使用小记
    linux下json库的编译及例程
    Epoll 实例
    gcc中的内嵌汇编语言
    BZOJ 1053: [HAOI2007]反素数ant
    2018.7.15模拟赛
    BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊
    BZOJ 4241: 历史研究
    LUOGU P2365 任务安排
  • 原文地址:https://www.cnblogs.com/xiaomoxian/p/5201588.html
Copyright © 2011-2022 走看看