zoukankan      html  css  js  c++  java
  • 论java中System.arrayCopy()与Arrays.copyOf()的区别

    如果我们想拷贝一个数组,我们可能会使用System.arraycopy()或者Arrays.copyof()两种方式。在这里,我们将使用一个比较简单的示例来阐述两者之间的区别。

    首先先说System.arraycopy()

    接下来是代码

           int[] arr = {1,2,3,4,5};  

           int[] copied=new int[10];

    System.arraycopy(arr,0,copied,1,5);//这里的arr是原数组,0是原数组拷贝的其实地址。而copied是目标数组,1是目标数组开始存放的位置,5则是数组存放的长度。


    System.out.println(Array.toString(copied));

    运行结果如下:

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

    再来说arrays.copyof()

    int copied=arrays.copyof(arr,10);

    System.out.println(Arrays.toString(copied));

    copied=arrays.copyof(arr,3);

    System.out.println(Arrays.toString(copied));

    运行结果如下:

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

    [1,2,3]

    这里我们来谈谈他们的区别,这也是之前我一直没弄懂的地方:

    两者的区别在于,Arrays.copyOf()不仅仅只是拷贝数组中的元素,在拷贝元素时,会创建一个新的数组对象。而System.arrayCopy只拷贝已经存在数组元素。

    如果我们看过Arrays.copyOf()的源码就会知道,该方法的底层还是调用了System.arrayCopyOf()方法。

    而且System.arrayCopy如果改变目标数组的值原数组的值也会随之改变。

  • 相关阅读:
    swift3.0 coreData的使用-日记本demo
    Objective-C plist文件与KVC 的使用
    swift3.0 CoreGraphics绘图-实现画板
    Objective-C 使用核心动画CAAnimation实现动画
    Objectiv-C UIKit基础 NSLayoutConstraint的使用(VFL实现)
    Objectiv-c
    C语言基础
    C语言基础
    swift 3.0 基础练习 面向对象 类的扩展
    myIsEqualToString
  • 原文地址:https://www.cnblogs.com/LiuYuXuanIsSoGood/p/7923268.html
Copyright © 2011-2022 走看看