最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 中clone()的使用方法

 更新時間:2017年09月27日 10:26:11   作者:皮蛋小粥  
這篇文章主要介紹了java 中clone()的使用方法的相關(guān)資料,希望通過本文能幫助大家能掌握clone()的克隆方法,需要的朋友可以參考下

java 中clone()的使用方法

前言:

clone就是復(fù)制, 在Java語言中, clone方法被對象調(diào)用,所以會復(fù)制對象。所謂的復(fù)制對象,首先要分配一個和源對象同樣大小的空間,在這個空間中創(chuàng)建一個新的對象。那么在java語言中,有:

1 使用new操作符創(chuàng)建一個對象

2 使用clone方法復(fù)制一個對象

那么這兩種方式有什么相同和不同呢? new操作符的本意是分配內(nèi)存。程序執(zhí)行到new操作符時, 首先去看new操作符后面的類型,因為知道了類型,才能知道要分配多大的內(nèi)存空間。分配完內(nèi)存之后,再調(diào)用構(gòu)造函數(shù),填充對象的各個域,這一步叫做對象的初始化,構(gòu)造方法返回后,一個對象創(chuàng)建完畢,可以把他的引用(地址)發(fā)布到外部,在外部就可以使用這個引用操縱這個對象。而clone在第一步是和new相似的, 都是分配內(nèi)存,調(diào)用clone方法時,分配的內(nèi)存和源對象(即調(diào)用clone方法的對象)相同,然后再使用原對象中對應(yīng)的各個域,填充新對象的域, 填充完成之后,clone方法返回,一個新的相同的對象被創(chuàng)建,同樣可以把這個新對象的引用發(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; 
  } 
   
} 
test.test@15db9742 
test.test@6d06d69c
1 

當(dāng)類中包含一些對象的時候,我們就需要深復(fù)制,就是在對對象的復(fù)制之后,急著對對象中的非基本類型的屬性也調(diào)用clone方法完成深復(fù)制。

clone方法執(zhí)行的是淺拷貝

如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

最新評論

普宁市| 平远县| 许昌市| 宁强县| 玉田县| 繁峙县| 德清县| 赫章县| 壤塘县| 治多县| 兴城市| 迁安市| 张掖市| 福海县| 安龙县| 定远县| 盐津县| 宣恩县| 洞头县| 阿巴嘎旗| 乡宁县| 南开区| 陆丰市| 东光县| 四川省| 绥芬河市| 社会| 兴文县| 德清县| 武穴市| 合阳县| 桃园市| 柘城县| 资中县| 寿阳县| 安义县| 长沙市| 新密市| 文登市| 海丰县| 邛崃市|