博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 深度复制与浅复制 copyOf、arraycopy、copyOfRange
阅读量:6905 次
发布时间:2019-06-27

本文共 1002 字,大约阅读时间需要 3 分钟。

1、copyOf

  原型:public static <T> T[] copyOf(T[] original, int newLength)

  original:原数组  newLength:要复制的长度

  Arrays.copyof()

2、arraycopy

  原型:void arraycopy(Object src, int srcPos, Object dest, int destPos, int  length)

  src:原数组  srcPos:原数组起始位置  dest:目标数组  destPost:目标数组的起始位置  length:复制长度

  System.arraycopy()

  注意:此方法要声明一个同类型且长度足够的数组,否则会报异常

3、copyOfRange

  原型:public static <T,U> T[] copyOfRange(U[] original, int from, int to)

  original:原数组  from:原数组的起始位置  to:终点位置(不包括)

  Arrays.copyOfRange()

 最实际的应用就是List中的remove方法就是使用了arraycopy()

public E remove(int var1) {        this.rangeCheck(var1);        ++this.modCount;        Object var2 = this.elementData(var1);        int var3 = this.size - var1 - 1;  //判断是否移除最后一个元素        if (var3 > 0) {            System.arraycopy(this.elementData, var1 + 1, this.elementData, var1, var3);  //将要移除元素后面的元素往前移        }        this.elementData[--this.size] = null;  //clear to let GC do its work
     return var2; }

 

转载于:https://www.cnblogs.com/Eeexiang/p/10133031.html

你可能感兴趣的文章
swift swift学习笔记--函数和闭包
查看>>
Java 面向对象,封装,继承
查看>>
ISO语言代码
查看>>
一文搞懂List 、List<Object>、List<?>的区别以及<? extends T>与<? super T>的区别
查看>>
Java 读写Properties配置文件
查看>>
17.自定义指令
查看>>
使用Maven构建多模块项目
查看>>
Google Shell Style Guide
查看>>
spring和springMVC的上下文
查看>>
create.c
查看>>
2014 蓝桥杯 预赛 c/c++ 本科B组 第九题:地宫取宝(12') [ dp ]
查看>>
手机尾号猜年龄骗局解密
查看>>
并查集加优先队列
查看>>
es6—变量的解构赋值
查看>>
腾讯app任务集市签名 php实现代码
查看>>
【kubernetes】ubuntu14.04 64位 搭建kubernetes过程
查看>>
一条命令搞定在VMware中的Ubuntu14.04 64 位安装Docker
查看>>
抽屉效果学习
查看>>
(转)Unity3D中常用的数据结构总结与分析
查看>>
创建压缩文件,并添加压缩的内容
查看>>