咨询电话:400-035-7887/021-6072 5770
首页 关于我们 下载与支持 产品社区
SPASVO移动站
  • 泽众
  • 自动化测试
    TestOne(一站式自动化测试) ATF(自动化测试框架) AutoRunner(自动化测试) MobileRunner(移动自动化测试)
  • 测试管理
  • 性能测试
    PerformanceRunner (性能测试软件) web pr(在线性能测试) APM (性能监控软件)
  • RPA机器人
  • 研发管理
    ALM(研发管理工具) 代码扫描CA
  • 泽众云测试
    兼容性测试 真机测试 Alltesting云真机
  • 客户案例
  • 合作代理
    为什么加入我们 申请加入代理
  • 全部产品

    性能测试

    PerformanceRunner (性能测试软件) APM(性能监控软件) web-PR(免费在线性能测试)

    RPA机器人

    AutoRunner Process 业务流程挖掘系统

    自动化测试

    TestOne(一站式自动化测试) ATF(自动化测试框架) AutoRunner(自动化测试软件) MobileRunner(移动自动化测试) AR365(自动化测试)

    测试管理

    ALM+TestCenter(生命周期管理软件) ProjectCenter(项目管理软件) TestCenter(测试管理软件) RequisiteCenter(需求管理) CodeAnalyzer(静态分析) 免费版TCE(bug管理工具)

    信创产品

    PerformanceRunner(性能测试软件) ALM+TestCenter(生命周期管理软件) ATF(自动化测试框架) AutoRunner(自动化测试软件) CodeAnalyzer(静态分析)

    测试服务

    第三方验收测试服务 性能测试服务 兼容性测试服务 安全测试服务 SPASVO测试实验室
  • 新闻资讯
  • 解决方案

    金融

    银行 自动化测试解决方案 手机银行兼容性测试解决方案 性能测试解决方案 测试体系与测试管理系统建设解决方案 研发项目管理解决方案 测试管理解决方案 银行众包测试解决方案 大数据测试用例自动生成解决方案 功能测试解决方案 证券公司(投资) 自动化测试解决方案 研发项目管理解决方案 测试管理解决方案 大数据测试用例自动生成解决方案 券商APP兼容性测试解决方案 生产日志回放解决方案 保险 自动化测试解决方案 测试管理解决方案 研发项目管理解决方案 基金 自动化测试解决方案 功能测试解决方案

    研究院所

    需求管理解决方案 真机云测试解决方案 性能测试解决方案 自动化测试解决方案 APM性能调优/全链路压测解决方案 研发项目管理解决方案 测试管理解决方案

    企业

    移动端兼容性测试解决方案 众包测试解决方案 第三方验收测试 性能测试方案 app自动化测试解决方案 安全测试解决方案 自动化测试解决方案 APM性能调优/全链路压测解决方案 研发项目管理解决方案 测试管理解决方案

    高等教育

    软件测试实验室建设方案 测试管理实训方案 测试实训课程方案 性能测试实训方案 移动测试实验室方案 自动化测试实训方案 云真机实验室建设方案 RPA机器人实验室建设方案 软件工程实验室建设方案 高校软件测试教程解决方案 高校软件测试教学资源包解决方案 软件测试教案和课件建设方案 测试学院 测试实战平台 测试实训平台

    医疗行业

    真机云测试解决方案 预决算管理解决方案 第三方验收测试

    政府

    测评中心/机构 真机云测试解决方案 测试实战平台 政府单位/软件园区 性能测试解决方案 自动化测试解决方案 第三方测试解决方案 移动端(app、h5、小程序)兼容性测试解决方案 研发项目管理解决方案 测试管理解决方案
  • 性能测试
  • PerformanceRunner (性能测试软件) APM (性能监控软件)
  • 自动化测试
  • TestOne(一站式自动化测试) ATF(自动化测试框架) AutoRunner(自动化测试) MobileRunner(移动自动化测试)
  • 研发管理
  • ALM(研发项目管理) TestCenter(测试管理软件)
  • RPA机器人
  • 代码扫描CA
  • 云真机
  • 性能测试
  • PerformanceRunner (性能测试软件) APM(性能监控软件) web-PR(免费在线性能测试)
  • RPA机器人
  • AutoRunner Process 业务流程挖掘系统
  • 自动化测试
  • TestOne(一站式自动化测试) ATF(自动化测试框架) AutoRunner(自动化测试软件) MobileRunner(移动自动化测试) AR365(自动化测试)
  • 测试管理
  • ALM+TestCenter(生命周期管理软件) ProjectCenter(项目管理软件) TestCenter(测试管理软件) RequisiteCenter(需求管理) CodeAnalyzer(静态分析) 免费版TCE(bug管理工具)
  • 信创产品
  • PerformanceRunner(性能测试软件) ALM+TestCenter(生命周期管理软件) ATF(自动化测试框架) AutoRunner(自动化测试软件) CodeAnalyzer(静态分析)
  • 测试服务
  • 第三方验收测试服务 性能测试服务 兼容性测试服务 安全测试服务 SPASVO测试实验室
  • 新闻资讯
  • 行业
  • 金融 研究院所 企业 高等教育 医疗行业 政府
  • 关于我们
您的位置:软件测试 >> 测试开发技术 >> Java

Java clone()方法来由及用法

作者:网络转载 发布时间:[ 2013/12/6 10:53:25 ] 推荐标签:

  从这个例子知道Java对对象和基本的数据类型的处理是不一样的。在Java中用对象的作为入口参数的传递则缺省为"引用传递",也是说仅仅传递了对象的一个"引用",这个"引用"的概念同C语言中的指针引用是一样的。当函数体内部对输入变量改变时,实质上是在对这个对象的直接操作。
  除了在函数传值的时候是"引用传递",在任何用"="向对象变量赋值的时候都是"引用传递",如:
A a1=new A();
A a2=new A();
a1.name="a1";
a2=a1;
a2.name="a2";
System.out.println("a1.name="+a1.name);
System.out.println("a2.name="+a2.name);
  此时输出的结果是:
  a1.name=a2
  a2.name=a2
  如果我们要用a2保存a1对象的数据,但又不希望a2对象数据被改变时不影响到a1。实现clone()方法是其一种简单,也是高效的手段。
  下面我们来实现A的clone方法
public class A implements Cloneable {
public String name;
public Object clone() {
A o = null;
try {
o = (A) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return o;
}
}
  首先要实现Cloneable接口,然后在重载clone方法,后在clone()方法中调用了super.clone(),这也意味着无论clone类的继承结构是什么样的,super.clone()直接或间接调用了java.lang.Object类的clone()方法。
A a1=new A();
A a2=new A();
a1.name="a1";
a2=a1;
a2.name="a2";
System.out.println("a1.name="+a1.name);
System.out.println("a2.name="+a2.name);
  此时输出的结果是:
  a1.name=a1
  a2.name=a2
  当Class A成员变量类型是java的基本类型时(外加String类型),只要实现如上简单的clone(称影子clone)可以。但是如果Class A成员变量是数组或复杂类型时,必须实现深度clone。
public class A implements Cloneable {
public String name[];
public A(){
name=new String[2];
}
public Object clone() {
A o = null;
try {
o = (A) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return o;
}
}
  测试代码
A a1=new A();
A a2=new A();
a1.name[0]="a";
a1.name[1]="1";
a2=(A)a1.clone();
a2.name[0]="b";
a2.name[1]="1";
System.out.println("a1.name="+a1.name);
System.out.println("a1.name="+a1.name[0]+a1.name[1]);
System.out.println("a2.name="+a2.name);
System.out.println("a2.name="+a2.name[0]+a2.name[1]);
  输出结果:
  a1.name=[Ljava.lang.String;@757aef
  a1.name=b1
  a2.name=[Ljava.lang.String;@757aef
  a2.name=b1
上一页123下一页
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。

相关推荐

Java性能测试有哪些不为众人所知的原则?Java设计模式??装饰者模式谈谈Java中遍历Map的几种方法Java Web入门必知你需要理解的Java反射机制知识总结编写更好的Java单元测试的7个技巧编程常用的几种时间戳转换(java .net 数据库)适合Java开发者学习的Python入门教程Java webdriver如何获取浏览器新窗口中的元素?Java重写与重载(区别与用途)Java变量的分类与初始化JavaScript有这几种测试分类Java有哪四个核心技术?给 Java开发者的10个大数据工具和框架Java中几个常用设计模式汇总java生态圈常用技术框架、开源中间件,系统架构及经典案例等

相关产品

机器人流程自动化

机器人流程自动化

自动化测试工具

自动化测试工具

移动平台自动化测试工具

移动平台自动化测试工具

测试管理工具

测试管理工具

代码质量管理

代码质量管理

软件研发生命周期管理

软件研发生命周期管理

ATF自动化测试框架软件

ATF自动化测试框架软件

性能测试工具

性能测试工具

项目管理软件

项目管理软件

需求管理软件

需求管理软件

更新发布

App、小程序、H5兼容性测试区别在哪些?

2024/9/11 15:34:34

兼容性测试覆盖多少机型,如何选择?

2024/9/10 11:13:49

P-One 在进行性能测试时,如何确保测试结果的准确性和可靠性?

2024/9/10 10:14:12

为什么越来越多的企业选择一站式测试平台?

2024/9/9 18:04:26

功能测试和接口测试的区别

2023/3/23 14:23:39

如何写好测试用例文档

2023/3/22 16:17:39

常用的选择回归测试的方式有哪些?

2022/6/14 16:14:27

测试流程中需要重点把关几个过程?

2021/10/18 15:37:44

热门文章

常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南

咨询电话

021-6072 5770-8054

沪公网安备 31010702002953号

沪ICP备07036474号 2003-2020 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd.

测试工具快速入口

测试管理工具/缺陷管理工具 项目管理软件 自动化测试工具/功能测试工具 移动自动化测试工具/App测试工具 ALM生命周期管理 性能测试工具/压力测试工具 Selenium自动化测试框架 RPA机器人流程自动化

帮助与支持

测试服务 RPA解决方案 核心业务系统测试解决方案 测试用例设计解决方案 接口测试解决方案 界面自动化测试解决方案 移动端自动化测试解决方案 性能测试解决方案 需求管理解决方案 代码管理解决方案 预决算管理解决方案 兼容性测试解决方案 众测(众包测试)测试解决方案 搭建测试体系解决方案 第三方验收测试解决方案 安全测试解决方案

关注我们

咨询热线:021-6072 5770-8054

金融专线:021-6072 5770-8006

sales@spasvo.com

沪ICP备07036474号 2003-2022 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd.
公众
账号

扫描二维码
关注泽众微信公众号

泽众官网公众号
问题
反馈
返回
顶部