java语言复制数组的四种方法
JAVA语言的下面几种数组复制方法中,哪个效率最高?
B.效率: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<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】详解Java解析XML的四种方法
XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML.本文将详细介绍用Java解析XML的四种方法. AD: XML现在已经成为一种通用的数据交换格式,它的平台无关性,语 ...
- java环境变量配置四种方法
原文:java环境变量配置四种方法 Java编程首要工作就是安装JDK(Java Development Kit).一通“NEXT”点完安装后就是最重要的环境变量设置了.也许有人会问为什么要设置环境变 ...
- Java解析XML的四种方法详解 - 转载
XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML.本文将详细介绍用Java解析XML的四种方法 在做一般的XML数据交换过程中,我更乐意传递XML字符串,而不是格式化 ...
- JAVA实现单例模式的四种方法和一些特点
JAVA实现单例模式的四种方法和一些特点,需要的朋友可以参考一下 一.饿汉式单例类 复制代码 代码如下: public class Singleton { private Sing ...
- java中定时器的四种方法
package com.lid; import java.util.Calendar; import java.util.Date; import java.util.Timer; import ja ...
- java 遍历map的四种方法
16:21:42 Map.entrySet() 这个方法返回的是一个Set<Map.Entry<K,V>>,Map.Entry 是Map中的一个接口,他的用途是表示一个映射项( ...
- java中复制数组的5种方法
“=”,相当于将一个数组变量的引用传递给另一个数组;如果一个数组发生改变,那么引用同一数组的变量也要发生改变.,这一种勉强算是吧 使用FOR循环,将数组的每个元素复制或者复制指定元素,不过效率差一点 ...
- java创建线程的四种方法
第一种: 通过继承Thread类创建线程 第二种: 通过实现Runnable接口创建线程 这两种早已烂记于心,这里就不作过多的介绍, 主要介绍其源码 Thread类 implements Runna ...
- 详解Java解析XML的四种方法
XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM ...
随机推荐
- 【LeetCode67】 Add Binary
题目描述: 解题思路: 此题的思路简单,下面的代码用StringBuilder更加简单,注意最后的结果要反转过来.[LeetCode415]Add Strings的解法和本题一模一样. java代码: ...
- css权威指南学习笔记--列表与生成内容
列表属性 1.list-style-type:css2多于css2.1 2.list-style-image:有继承,子级列表会继承该图像 3.list-style-position:inside|o ...
- React实战一
目录 1. 搭建环境 2. React知识点 1. 组件 1.1 定义一个组件 1.2 组合与拆分组件 1.3 组件传值 1.4 state 1.5 生命周期函数 1.6 无状态组件 1.7 List ...
- C语言中堆内存的开辟和释放与内存处理函数
C语言动态分配内存,malloc的出现就是来弥补静态内存分配的缺点 比如说我们在定义数组的时候,数组的长度必须是一个常量,不能改变的值,假如我事先定义了数组,一旦业务需求发生改变,那么这个数组就不能再 ...
- Spring第二天——IOC注解操作与AOP概念
大致内容 spring的bean管理(注解实现) AOP原理 log4j介绍 spring整合web项目的演示 一.spring注解实现bean管理 注解: 代码中一些特殊的标记,使用注解也可以完成一 ...
- linux java jdk环境变量设置之后,依旧提示 No such file or directory
今天又默默的在linux下安装java 明明是很简单的事情,在~/.bashrc中添加如下内容: export JAVA_HOME=/home/ubuntu/jdkexport CLASSPATH=. ...
- 苏州Uber优步司机奖励政策(4月24日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- Velocity的学习1
Velocity 是一个基于Java的的模板引擎,通过特定的语法,速度可以获取在的Java语言中定义的对象,从而实现界面和Java的代码的真正分离,这意味着可以使用Velocity替代JSP的开发模式 ...
- jzoj5341 捕老鼠
Description 为了加快社会主义现代化,建设新农村,农夫约(Farmer Jo)决定给农庄里的仓库灭灭鼠.于是,猫被农夫约派去捕老鼠. 猫虽然擅长捕老鼠,但是老鼠们太健美了,身手敏捷,于是猫想 ...
- anaconda 及python pip安装 类库等问题收集
在win7下 通过anaconda安装jieba 报如下错误: 问题1:TypeError: parse() got an unexpected keyword argument 'transport ...