java数组复制的四种方法效率对比
有关数组的基础知识,有很多方面,比方说初始化,引用,遍历,以及一维数组和二维数组,今天我们先看看数组复制的有关内容。 来源于牛客网的一道选择题: 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 - 源数组。 应用实例: 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,a2,2); System.out.print("copy后结果:"); for(int i=0;i<a2.length;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 EE FrontController与Spring的DispatcherServlet相同
- playframework – 引起:javax.persistence.EntityNotFound
- java – 如何使用地图列表在Spring中执行批量更新?
- spring 声明式事务实现过程解析
- Java8新特性之lambda(动力节点Java学院整理)
- java – 即使没有contentlength头,也从HTTP请求获取内容
- 如何调用第三方API实现图片上传。
- 如何在Eclipse FormEditor中实现撤消/重做功能?
- java – 无法做二级缓存
- Java日期时间字符串和毫秒相互转换的方法