‘壹’ 关于clone和equals的一个问题
楼主问题很好。
首先这两种说法都是对的。
具体地说:
clone确实是为了产生一个相同的副本,这样在内存中就有两个不同的内存区域放了两个内容相磨隐同的对象,然后分别用x,y指向它们。
楼主关于Obeject的equals函衡含数的说法也是对的,在JAVA里面Object的equals 函数确实就是用==来比较的,楼主说 x.clone().equals(x)将为 true,API里同时也说了this is not an absolute requirement,也就是说不是强制必须这样。事实上,我们用的对象(比如我们自己定义了Person类)都是继承自Object,需要比较时,需要自己重写equals函数,这样的话,就跟引用无关了,可以理解为:Object的equals函数这样定义是因为Object本身没有具体意义,不瞎拦厅知道怎么比较,具体的程序员写的类的equals函数需要自己定义,往往是比较类的成员变量(比如比较年龄、姓名等成员变量),与引用没什么关系了。
楼主可以查一下String的equals函数,这样就明白了。
‘贰’ Java 如何复制对象
可以使用clone来实现,clone用于为引用类型的复制
1.使用clone方法的类必须先实现Cloneable接口,不然clone方法会直接返回CloneNotSupportedException不支持克隆的异常
2、实现Cloneable接口的类应该使用公共方法重写 Object.clone(它是受保护的)。某个对象实现了此接口就克隆它是不可能的。即使 clone 方法是反射性调用的,也无法保证它将获得成功。
3、在Java.lang.Object类中克隆方法是这么定义的:
protected Object clone()
throws CloneNotSupportedException
创建并返回此对象的一个副本。表明是一个受保护的方法,同一个包中可见。
‘叁’ 在 Java 应用程序中如何编写一个方法来交换两个基本类型的值或两个对象引用的值呢
基本类型值的交换与C一梁胡档样。比如:
int tmp = a;
a = b;
b = tmp;
引用值的交换业和上面类似,这又叫做浅拷贝。比如:
Object tmp = a;
a = b;
b = tmp;
如果要将类中的所有成员都复制,需要深拷贝。比如:
Object tmp = a.clone();
a = (Object)b.clone();
b = (Object)tmp.clone();
这里方法clone由做搜用户自定橡乱义。
‘肆’ JAVA创建对象有哪几种方式
Java中创建对象的四种方法薯型 收藏Java中创建对象的四种方式
1.用new语坦皮句创建对象,这是最常见的创建对象的数信猜方法。
2.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
3.调用对象的clone()方法。
4.运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。
第一种最常见
‘伍’ recordset的clone方法
Clone 方法
创建与现有 Recordset 对象相同的复制 Recordset 对象。可选择指定该副本为只读。
语法
Set rstDuplicate = rstOriginal.Clone (LockType)
返回值
返回 Recordset 对象引用。
参数
rstDuplicate 对象变量,标识正在创建的复制 Recordset 对象。
rstOriginal 对象变量,标识要被复制的 Recordset 对象。
LockType 可选,LockTypeEnum 值,指定原始 Recordset 的锁定类型或只读 Recordset。
常量 说明
AdLockUnspecified 默认值。使用与原始类型相同的锁定类型创建副本。
AdLockReadOnly 副本创建为只读。
说明
使用 Clone 方法可创建多个 Recordset 对象副本信唯,这对于希望在给定的记录组中保留多个当前记录李键十分有用。使用 Clone 方法比使用与初始定义相同的定义创建和打开新 Recordset 对象要有效得多。
新创建副本的当前记录将设置为首记录。
无论游标类型如何,对某个 Recordset 对象所作的修改在其所有副本中都是可见的。不过一旦在原始 Recordset 上执行了 Requery,副本将不再与原始 Recordset 同步。
关闭原始 Recordset 时并不关闭它的副本,而关闭某个副本也将不关闭原始 Recordset 或任何其他副本。
用户只滑扰培允许复制支持书签的 Recordset 对象。书签值是可交换的,也就是说,来自一个 Recordset 对象的书签引用可引用其任何副本中的相同记录。
‘陆’ 克隆的定义
克隆是指生物体通过体细胞进行的无性繁殖,以及枝袜由无性繁殖形成的基因型完全相同的后代个体组成的种群。通常是利用生物技术由无性生殖产生与原个体有完全相同基因的个体或种群。
原意是指以幼苗或嫩枝插条,以无性繁殖或营养配碧繁殖的方式培育植物,如扦插和嫁接。在大陆译为“无性繁殖”,在台湾与港澳一般意译为复制,转殖或群殖。
中文也有更加确切的词表达克隆,“无性繁殖”、“无性系化”以及“纯系化”。
(6)clone方法在哪里定义的扩展阅读:
克隆种类:
1.由同一个祖先细胞分裂繁殖猛卖激而形成的纯细胞系(每个基因彼此相同)。
2.先将含有遗传物质的供体细胞的核移植到去除了细胞核的受体卵细胞中,利用微电流刺激等使两者融合为一体。(与提供细胞者基因相同)