有关数组的基础知识,有很多方面,比方说初始化,引用,遍历,以及一维数组和二维数组,今天我们先看看数组复制的有关内容。

来源于牛客网的一道选择题:

JAVA语言的下面几种数组复制方法中,哪个效率最高?

A.for循环逐一复制

B.System.arraycopy

C.System.copyof

D.使用clone方法

效率:System.arraycopy>clone>Arrays.copyOf>for循环

1、System.arraycopy的用法:

public static void arraycopy(Object src,

int srcPos,

Object dest,

int destPos,

int length)

参数:

src - 源数组。

srcPos - 源数组中的起始位置。

dest - 目标数组。

destPos - 目标数据中的起始位置。

length - 要复制的数组元素的数量

应用实例:

public class Main{

public static void main(String[] args) {

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

int[] a2={11,12,13,14,15,16};

System.arraycopy(a1, 2, a2, 3, 2);

System.out.print("copy后结果:");

for(int i=0;i

System.out.print(a2[i]+" ");

}

}

}

运行结果:

2、clone的用法:

java.lang.Object类的clone()方法为protected类型,不可直接调用,需要先对要克隆的类进行下列操作:

首先被克隆的类实现Cloneable接口;然后在该类中覆盖clone()方法,并且在该clone()方法中调用super.clone();这样,super.clone()便可以调用java.lang.Object类的clone()方法。

应用实例:

//被克隆的类要实现Cloneable接口

class Cat implements Cloneable

{

private String name;

private int age;

public Cat(String name,int age)

{

this.name=name;

this.age=age;

}

//重写clone()方法

protected Object clone()throws CloneNotSupportedException{

return super.clone() ;

}

}

public class Clone {

public static void main(String[] args) throws CloneNotSupportedException {

Cat cat1=new Cat("xiaohua",3);

System.out.println(cat1);

//调用clone方法

Cat cat2=(Cat)cat1.clone();

System.out.println(cat2);

}

}

3、复制引用和复制对象的区别

复制引用:是指将某个对象的地址复制,所以复制后的对象副本的地址和源对象相同,这样,当改变副本的某个值后,源对象值也被改变;

复制对象:是将源对象整个复制,对象副本和源对象的地址并不相同,当改变副本的某个值后,源对象值不会改变;

Cat cat1=new Cat("xiaohua",3);//源对象

System.out.println("源对象地址"+cat1);

//调用clone方法,复制对象

Cat cat2=(Cat)cat1.clone();

Cat cat3=(Cat)cat1;//复制引用

System.out.println("复制对象地址:"+cat2);

System.out.println("复制引用地址:"+cat3);

输出结果:

可以看出,复制引用的对象和源对象地址相同,复制对象和源对象地址不同

4、Arrays.copyOf 的用法:

Arrays.copyOf有十种重载方法,复制指定的数组,返回原数组的副本。具体可以查看jdk api

总结

以上就是本文关于java数组复制的四种方法简单代码示例及效率对比的全部内容,希望对大家了解数组复制的有关内容有所帮助。

java 数组效率_java数组复制的四种方法效率对比相关推荐

  1. Java 判断字符串是否为空的四种方法、优缺点与注意事项

    以下是Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s)); 方法二: ...

  2. Java解决Hash(散列)冲突的四种方法--开放地址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区

    Java解决Hash(散列)冲突的四种方法--开放地址法(线性探测,二次探测,伪随机探测).链地址法.再哈希.建立公共溢出区 参考文章: (1)Java解决Hash(散列)冲突的四种方法--开放地址法 ...

  3. JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...

  4. java多线程传值覆盖_Java 多线程传值的四种方法

    其实大家都知道多线程传值有三种方式: 1:通过构造方法传递数据 2:通过变量和方法传递数据 3:通过回调函数传递数据 那么博主有个非常变态的需求,所以找出了第四种实现方式,先看效果图: 动态Cron4 ...

  5. java线程异步传值_Java 多线程传值的四种方法

    Java 多线程传值的四种方法 作者: sunjs 更新时间:2020-09-11 15:20:16 原文链接 其实大家都知道多线程传值有三种方式: 1:通过构造方法传递数据 2:通过变量和方法传递数 ...

  6. java连接sql server2008_java连接sql-server-2008的四种方法

    <java连接sql-server-2008的四种方法>由会员分享,可在线阅读,更多相关<java连接sql-server-2008的四种方法(11页珍藏版)>请在人人文库网上 ...

  7. 各种存储分配算法java代码实现_Java实现操作系统中四种动态内存分配算法:BF+NF+WF+FF...

    1 概述 本文是利用Java实现操作系统中的四种动态内存分配方式 ,分别是:BF NF WF FF 分两部分,第一部分是介绍四种分配方式的概念以及例子,第二部分是代码实现以及讲解. 2 四种分配方式 ...

  8. java json 解析_Java解析JSON的四种方式

    一.什么是JSON JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据.简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于阅读和编写,同时也易于解析和 ...

  9. 线程池 java 新建方式_Java线程池的四种创建方式

    Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程. newFi ...

最新文章

  1. GitLab 完成 1 亿美元融资 以 10 亿美元的估值成为“独角兽”
  2. 1.8 Java字节流和字符流的区别,如何区分输入流和输出流?
  3. Leaflet中通过setZIndex实现图层层级控制
  4. PHP只下载不打开文件
  5. bzoj2467生成树
  6. [html] 移动端如何设置页面以全屏模式运行?
  7. 十字链表、邻接多重表
  8. go 执行shell 命令
  9. Arduino DHT11温湿度传感器数据示例
  10. 业务知识 - 金融知识笔记
  11. pythonidle是什么_Python入门 | IDLE的介绍和使用方法
  12. 内存申请标记注意区分___GFP_HIGH和___GFP_HIGHMEM
  13. 贸易大时代:代理IP助力企业出海
  14. Hadoop分布式文件系统 (HDFS)
  15. cisco 华三 对接_H3C 交换机与Cisco交换机采用链路聚合对接的配置案例
  16. Unicode 和多字节字符集 (MBCS) 支持
  17. 机器人编程软件semia_AlphaRobot2S(Alpha2机器人PC编程软件)
  18. 用卡尔曼滤波处理工程数据的方法与思考with基于GPS与INS组合导航的滤波模型仿真
  19. java就业率高吗_java好就业吗
  20. 无线传感网的MAC层协议

热门文章

  1. lfs(systemv版本)学习笔记-第1页
  2. gulp自动化添加版本号并修改为参数格式
  3. 关于自动装箱和自动拆箱
  4. 文件上传中的临时上传路径问题
  5. 线性表顺序表模板 纯本人手工创造
  6. ibatis基础(五):删除指定id的单个对象
  7. 如何设置ListView控件中的列头的颜色!
  8. git remote 命令的用法
  9. Github使用之git回退到某个历史版本
  10. 【UVALive】3695 Distant Galaxy(......)