首页 > 办公教程 > 正文

java对象克隆,如何修改java中的克隆对象

2020-05-20 09:40:54  来源:http://www.capsicumpm.com  编辑:admin

java对象之间如何实现克隆(复制)

用clone()方法,不过在对象重载了Object的clone才能用。Object的clone方法是protected。

java 对象克隆什么时候用

个人觉得,我们编程需要克隆的并不多,但是程序之间方法的调用、参数的传递是会使用克隆的。比如函数参数类型是自定义的类时,便是引用传递而不是值传递,这时候便克隆对象了一般用到的地方,是为了不破坏原对象的属性,在这个基础上创建新的克隆对象进行操作的安全性就能得到提高了

java中对象的克隆疑问??

Object o1=new Object();System.out.println(o1.hasCode());//打印o1的内存地址。Object o2=new Object();System.out.println(o2.hasCode());//打印o2的内存地址。可见o1和o2拥有不同的内存数据,如果你让o2=o1,那o1和o2的地址就一样了,就是一个对象了,怎么还叫克隆?老祖宗Object类的clone方法是将一个对象的数据原封不动的复制到另一个对象中去,比如o2=o1.clone();就将o1的数据复制了一份考贝到了另一块内存中,所以o2与o1地址不一样但数据相同。你这里的super.clone();就是调用的Object类的clone()方法,调用Object的方法不就是省得你自己写了吗。你可能还会问Object既然有clone()方法,而所有的类都是Object类的子类,那所有的类不都有clone()方法吗,干什么还自己写?Object类虽然有clone()方法,但是访问控制符是protected而不是public,于是别的类不可见,所以你需要重写它: @Override public Object clone(){ Object obj=null; try { obj= super.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); } return obj; }而且你需要将你的类实现cloneable接口,这是必须的。

JAVA对象交换的问题

public class cs{ public static void main(String[] args){ example [] exa=new example[5]; exa[0]=new example(); exa[1]=new example(); exa[2]=new example(); exa[0].set("one"); exa[1].set("two"); exa[2].out(exa,0,1); System.out.println(exa[0].st); System.out.println(exa[1].st); exa[2].set(exa[2]); System.out.println(exa[2].st); } } class example { String st; public void set(String st){ this.st=st; } public void out(example[] e,int i,int j){ example t=e[i]; e[i]=e[j]; e[j]=t; } public void set(example exa){ exa.st="one one"; } } Java中的引用传递,是把变量的所在内存中的地址传递给参数,参数通过地址找到变量的值。 对于方法method(Object o)的调用method(x), 不是把对象x复制一份传递给参数o,而是把对象x的在内存中的首地址,也就是把对象x的引用拷贝给参数o。所以直接交换对象是不行的,不过可以交换数组中的对象元素。或者通过反射来实现。

基督徒可以学Java语言吗?Java语言是面向对象的 基督徒不能拜偶像吧

面向对象是程序设计概念,它不属于JAVA,也不属于C++,是一种比较设计模式和概念。源于六十年代的SIMULA语言。面向对象程序设计(Object-OrientedProgramming,以下简称OOP)是一种起源于六十年代的Simula语言,发展已经将近三十年的程序设计思想。其自身理论已经十分完善,并被多种面向对象程序设计语言(Object-OrientedProgrammingLanguage,以下简称OOPL)实现。如果把Unix系统看成是国外在系统软件方面的文化根基,那么Smalltalk语言无疑在OOPL领域和Unix持有相同地位。由于很多原因,国内大部分程序设计人员并没有很深的OOP以及OOPL理论,很多人从一开始学习到工作很多年都只是接触到c/c++,java,vb,delphi等静态类型语言,而对纯粹的OOP思想以及作为OOPL根基的Smalltalk以及动态类型语言知之甚少,不知道其实世界上还有一些可以针对变量不绑定类型的编程语言。