当前位置: 首页 > news >正文

如何将自己做的网站发布北京网站设计优刻

如何将自己做的网站发布,北京网站设计优刻,建设网站合同文档,做图网站有哪些东西链接克隆 完整克隆在继续克隆概念之前#xff0c;让我们用对象创建概念刷新基础知识。 使用new运算符创建对象时#xff0c;对象将在堆中获取内存分配。 堆中的对象创建 在Java中#xff0c;理想情况下仅通过引用变量修改对象#xff0c;即仅复制对象的内存地址#xff… 链接克隆 完整克隆 在继续克隆概念之前让我们用对象创建概念刷新基础知识。 使用new运算符创建对象时对象将在堆中获取内存分配。 堆中的对象创建 在Java中理想情况下仅通过引用变量修改对象即仅复制对象的内存地址因此原始对象中的任何更改都将反映在新变量中。 Glass objGlass1 new Glass; Glass objGlass2 objGlass1; 在这种情况下在这种情况下您对对象objGlass1所做的任何更改都会反映在对象objGlass2中 反之亦然。 这意味着 objGlass1 objGlass2 将返回true这两个引用变量objGlass1和objGlass2都引用同一对象。 但是如果您打算复制对象而不是仅复制对象的引用则需要克隆。 什么是克隆 克隆是复制对象的过程即通过复制自身来创建新实例。 Java中的克隆可以通过使用对象的clone方法来完成。 克隆使用相同的类和所有字段具有相同的值来创建并返回对象的副本。 Glass objGlass1 新的Glass; 玻璃objGlass2 玻璃objGlass.clone; 克隆后让我们看下面的分析 objGlass1 objGlass2返回TRUE这意味着objGlass1和objGlass2引用两个不同的内存位置即两个不同的对象。 objGlass1.getClass objGlass2 .getClass返回TRUE这意味着克隆的对象和原始对象应为同一类型。 objGlass1.equalsobjGlass2返回TRUE表示克隆的对象数据应等于原始数据但是克隆后随时可以更改。 浅克隆与深克隆 Java支持两种克隆类型–浅克隆和深克隆。 如果是“ 浅”克隆则会创建一个新对象该对象具有原始对象中值的精确副本。 Object的clone方法提供了浅层克隆。 在这种克隆机制中将复制对象而不包含其包含的对象。 浅克隆仅复制对象的顶层结构而不复制较低层。 结构形式 浅克隆结构 在上图中 OriginalObject1具有Field1和一个包含的对象称为ReferenceObject1 。 现在在浅克隆OriginalObject1的过程中将使用具有从Field1复制的值的Field2创建ClonedObject2 它仍指向ReferenceObject1 。 这背后的原因是Field1是原始类型因此将其值复制到Field2中 。 但是由于ReferenceObject1是对象类型因此ClonedObject2指向相同的ReferenceObject1 。 对ReferenceObject1所做的任何更改将可见ClonedObject2 。 浅克隆结构 如果是深度克隆 则复制所有字段。 在这种情况下即使引用的对象也将与字段一起复制到克隆的对象中。 深克隆结构 如上图所示 OriginalObject1具有基本类型Field1和ReferenceObject1 。 现在当我们做OriginalObject1然后ClonedObject2与字段2是具有从Field 1和ReferenceObject2含有ReferenceObject1的复制值复制的值创建沿的深克隆。 深克隆结构 浅克隆示例 浅克隆示例 浅克隆示例 在上面的示例中我们有一个原始对象Employee它引用了Department类和一个字段EmployeeName 。 首先假设EmployeeName “ Chris”和DepartmentName “ Sales”的值。 当我们通过“浅层克隆”克隆对象Employee时将创建一个ClonedEmployee对象该对象具有一个重复的字段克隆了EmployeeName和Department。 但是我们需要注意的是没有创建重复的Department对象。 克隆的Employee对象引用与所引用类Department相同的内存地址。 因此现在当我们将EmployeeName的原始对象值更改为“ Peter”将DepartmentName的原始对象值更改为“ Finance”时克隆的EmployeeName字段将不会更改。 它仍然包含旧值根据图表的上述部分。 但是我们必须注意克隆的DepartmentName现在已修改为“ Finance”以反映更改。 这是因为克隆的Employee引用与原始对象相同的内存地址。 因此对原始对象引用所做的任何更改对于引用原始对象的克隆对象也是可见的。 它不会像字段一样重复。 浅克隆的代码示例 Department.java ReferenceObject public class Department {private String deptName;public Department(String str) {deptName str;}public String getDeptName() {return deptName;}public void setDeptName(String deptName) {this.deptName deptName;} } Employee.java 主对象 public class Employee implements Cloneable {private String employeeName;private Department dept;public String getEmployeeName() {return employeeName;}public void setEmployeeName(String employeeName) {this.employeeName employeeName;}public Department getDept() {return dept;}public void setDept(Department dept) {this.dept dept;}public Employee(String emp, String empDept) {employeeName emp;dept new Department(empDept);}public Object clone() {try {return super.clone();} catch (CloneNotSupportedException e) {e.printStackTrace();return null;}} } 客户端程序 public static void main(String[] args) {Employee emp new Employee(Chris, Sales);System.out.println(Original Object value - Employee Name: emp.getEmployeeName() department name: emp.getDept().getDeptName());Employee clonedEmployee (Employee) emp.clone();System.out.println(Cloned object value - Employee Name: clonedEmployee.getEmployeeName() department name: clonedEmployee.getDept().getDeptName());// Now lets change values of Original Objectemp.setEmployeeName(Peter);emp.getDept().setDeptName(Finance);System.out.println(Original Object value after it is modified - Employee Name: emp.getEmployeeName() department name: emp.getDept().getDeptName());System.out.println(Cloned object value after modification of original object - Employee Name: clonedEmployee.getEmployeeName() department name: clonedEmployee.getDept().getDeptName());} 深克隆实例 深克隆实例 与深度克隆不同在进行深度克隆的情况下原始对象的所有字段都将复制到克隆对象包括原始对象引用的对象。 此过程将复制由字段指向的动态分配的内存。 在上面的示例中即使原始对象被修改并且其值被更改克隆对象也不会被更改包括参考对象值因为它不引用相同的存储器地址。 深克隆代码示例 在进行深度克隆的情况下唯一的更改发生在clone方法中。 与浅克隆不同不调用super.clone方法而是使用clone方法内部的new运算符创建对象。 public Object clone() {//Deep Copy processEmployee e new Employee(employeeName, dept.getDeptName());return e; } 希望您喜欢这篇文章。 请随时提供您的反馈和意见。 参考在Idiotechie博客上我们的JCG合作伙伴 Mainak Goswami 深入探讨了克隆 。 翻译自: https://www.javacodegeeks.com/2012/11/deep-diving-into-cloning.html链接克隆 完整克隆
http://www.yutouwan.com/news/9760/

相关文章:

  • 如何把网站放到百度wordpress用户名忘记密码
  • 网站做某个关键词排名该怎么做网址导航模板
  • 电费公众号开发盐城网站优化价格
  • 闸北区网站设计与制作ASP.NET网站建设实战
  • 可以提供排版的网站网文封面制作网站
  • wordpress 自建图床网站优化资源
  • 重庆网站搜索引擎seowordpress 前台加载慢
  • 小雨wordpress群站优化之链轮模式
  • 安徽省建设干部培训学校网站为什么要网站建设
  • 网站制作网站建设单位安装wordpress步骤
  • 网站建设流程百度经验镇江论坛网站建设
  • 公司网站模板 免费英特尔网站开发框架
  • 深圳龙华住房和建设局网站西安建设工程交易中心官网
  • html5 网站 源码如何开发微信公众平台
  • 主机屋网站在那注册前端 模板 网站
  • 做一个像美团的网站需要多少钱免费的设计素材网
  • 长沙建设局网站网站搜索栏怎么做
  • 有关房地产开发建设的网站品牌建设的内容
  • 深圳网站建设需要多少钱1688一件代发详细步骤
  • 河南省城乡和住房建设厅网站湖北省建设厅网站查询
  • 云南电子政务网站建设免费地方门户网站源码
  • 榆林做网站需要注意的几点个人社保缴费基数查询
  • 做海报的参考网站成都高端网站建设公司
  • 建站公司网站社区个人网页制作总结
  • 做网站哪些网络公司好青海网站设计高端
  • 企业网站最底下做的是什么西安网站建设易网宣
  • 如何快速建设推广网站网页美工设计总结
  • 网站建设过程中应该注意的事项有wordpress宽度
  • php网站开发薪资 深圳瑞安市公用建设局网站
  • 网页设计构建的基本流程郑州网站建设专业乐云seo