Posted on 2008-09-20 09:01
魚躍于淵 閱讀(133)
評論(0) 編輯 收藏 所屬分類:
精品網(wǎng)摘
[摘要] 經(jīng)常聽到有人說java中沒有指針。事實如此嗎?no,java是有指針的,只不過換了個名字而已,也就是我們經(jīng)常提到的引用。
[關(guān)鍵字] Java 克隆
經(jīng)常聽到有人說java中沒有指針。事實如此嗎?no,java是有指針的,只不過換了個名字而已,也就是我們經(jīng)常提到的引用。我們知道,在java中一切都是對象,那么我們?nèi)绾尾倏貙ο螅咳绾卧诔汕先f的對象中找到我們所需的那個對象呢?又是如何讓對象按照我們的意思來完成任務(wù)的呢?
Object o = new Object();
這是java中最常見的語句了,在這句話中做了三件事。首先聲明一個Object類型的變量o,在內(nèi)存中為對象劃分一塊地址new Object(),將聲明的變量指向內(nèi)存中的對象。如此一來,我們就可以通過o來操縱對象了。就好像孩子們玩的遙控飛機,在空中飛行的是飛機,而使它做出優(yōu)美動作的卻是孩子們手中的搖控器。
"克隆"是如今聽到的較多的詞匯,聽說已經(jīng)將某只羊克隆了好幾份了。但愿這種技術(shù)不要在人身上實驗。java中也有"克隆",與現(xiàn)實世界的克隆一樣,將一個實際存在的對象拷貝幾份。如下:
//倒霉的羊
public class Sheep implements Cloneable{
private String name;
public void setName(String arg) {
name = arg;
}
public String getName() {
return name;
}
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
//克隆
public class Main {
public static void main(String[] args) throws CloneNotSupportedException {
Sheep sheep = new Sheep(); //先得到那只羊的實例
sheep.setName("我是真的"); //給它做個記號
System.out.println("sheep.getName() = " + sheep.getName());
Sheep sheepClone = (Sheep)sheep.clone(); //開始克隆
System.out.println("sheepClone.getName() = " + sheepClone.getName());
}
}
運行程序結(jié)果為:
sheep.getName() = 我是真的
sheepClone.getName() = 我是真的