java 中clone()的使用方法

网友投稿 265 2023-03-29


java 中clone()的使用方法

java 中clone()的使用方法

前言:

clone就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。那么在java语言中,有:

1 使用new操作符创建一个对象

2 使用clone方法复制一个对象

那么这两种方式有什么相同和不同呢? new操作符的本意是分配内存。程序执行到new操作符时, 首先去看new操作符后面的类型,因为知道了类型,才能知道要分配多大的内存空间。分配完内存之后,再调用构造函数,填充对象的各个域,这一步叫做对象的初始化,构造方法返回后,一个对象创建完毕,可以把他的引用(地址)发布到外部,在外部就可以使用这个引用操纵这个对象。而clone在第一步是和new相似的, 都是分配内存,调用clone方法时,分配的内存和源对象(即调用clone方法的对象)相同,然后再使用原对象中对应的各个域,填充新对象的域, 填充完成之后,cloeiIeJwJmoVne方法返回,一个新的相同的对象被创建,同样可以把这个新对象的引用发布到外部。

package test;

public class Cloneoo {

public static void main(String[] args) {

test t=new test();

t.changeInt();

System.out.println(t);

try {

test t1=(test) t.clone();//创建

System.out.println(t1);

System.out.println(t1.getI());

} catch (CloneNotSupportedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}eiIeJwJmoV

}

class test implements Cloneable{

private int i=0;

public void setI(int i) {

this.i = i;

}

public int getI() {

return i;

}

public void changeInt(){

this.i=1;

}

@Override

protected Object clone() throws CloneNotSupportedException {

// TODO Auto-generated method stub

test t=null;

t=(test) super.clone();

return t;

}

}

test.test@15db9742

test.test@6d06d69c

1

当类中包含一些对象的时候,我们就需要深复制,就是在对对象的复制之后,急着对对象中的非基本类型的属性也调用clone方法完成深复制。

clone方法执行的是浅拷贝

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:详解Struts2动态方法调用
下一篇:spring boot自定义404错误信息的方法示例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~