clone()函數(shù)如何在java項(xiàng)目中使用?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

clone就是復(fù)制, 在Java語(yǔ)言中, clone方法被對(duì)象調(diào)用,所以會(huì)復(fù)制對(duì)象。所謂的復(fù)制對(duì)象,首先要分配一個(gè)和源對(duì)象同樣大小的空間,在這個(gè)空間中創(chuàng)建一個(gè)新的對(duì)象。那么在java語(yǔ)言中,有:
1 使用new操作符創(chuàng)建一個(gè)對(duì)象
2 使用clone方法復(fù)制一個(gè)對(duì)象
那么這兩種方式有什么相同和不同呢? new操作符的本意是分配內(nèi)存。程序執(zhí)行到new操作符時(shí), 首先去看new操作符后面的類型,因?yàn)橹懒祟愋停拍苤酪峙涠啻蟮膬?nèi)存空間。分配完內(nèi)存之后,再調(diào)用構(gòu)造函數(shù),填充對(duì)象的各個(gè)域,這一步叫做對(duì)象的初始化,構(gòu)造方法返回后,一個(gè)對(duì)象創(chuàng)建完畢,可以把他的引用(地址)發(fā)布到外部,在外部就可以使用這個(gè)引用操縱這個(gè)對(duì)象。而clone在第一步是和new相似的, 都是分配內(nèi)存,調(diào)用clone方法時(shí),分配的內(nèi)存和源對(duì)象(即調(diào)用clone方法的對(duì)象)相同,然后再使用原對(duì)象中對(duì)應(yīng)的各個(gè)域,填充新對(duì)象的域, 填充完成之后,clone方法返回,一個(gè)新的相同的對(duì)象被創(chuàng)建,同樣可以把這個(gè)新對(duì)象的引用發(fā)布到外部。
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();//創(chuàng)建
System.out.println(t1);
System.out.println(t1.getI());
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
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;
}
}
文章標(biāo)題:clone()函數(shù)如何在java項(xiàng)目中使用-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://chinadenli.net/article14/pidge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、建站公司、靜態(tài)網(wǎng)站、定制網(wǎng)站、品牌網(wǎng)站建設(shè)、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容