在異常處理中,常用到乙個函式就是tostring(),返回乙個string型別,描述異常的基本資訊。事實上,對於每個類都可以重寫tostring()函式,比如說,我們定義了乙個物件,student s;
如果想以如下的格式system.out.println(s)列印出我們想要的資訊,就必須重寫tostring()函式,因為系統會自動呼叫類的tostring()函式,前面講到,所有類都是object的子類,所以tostring()函式事實上是object類中的乙個函式。如果不重寫tostring()函式,會列印出如下格式的資訊:物件名@雜湊碼,雜湊碼是根據記憶體位置來給出的。寫了一段**,重寫了tostring()函式。
class student
public string tostring()
}class tostringtest
}另講到深淺轉殖操作。在某些情況下,將乙個物件的賦值給另乙個物件時,如果後者發生了改變,則會反應到前者,因為事實上這種賦值是一種位址傳遞,兩個物件指向同樣的位址。因此,為了避免這種情況,引入了轉殖操作。
深淺轉殖的區別在於,深轉殖可以完全轉殖某個物件包括其中的引用型別如某些自定義的類等,而淺轉殖則只能轉殖物件中的基本型別。
乙個深轉殖的**,這是我最近的**中比較複雜的乙個了,足足除錯了兩個小時之多,可見我水平之惡劣。**有點長,關係比較複雜。不過最終在jdk1.5下編譯成功。
class student implements cloneable
public object clone()
catch(clonenotsupportedexception e)
return o;}}
class professor implements cloneable
public object clone()
catch(clonenotsupportedexception e)
p.s=(student)s.clone();
return p;}}
class clonetest
}
拷貝和深淺拷貝
當list2為list的拷貝物件時,list內的可變資料型別變化,list2變化 list內的不可變資料型別變化,list2變化。總之 list變化list2一定變化 list 1,2,3,4,list2 list print list print list2 1,2,3,4,5 1,2,3,4,5...
深淺拷貝以及深淺拷貝的方法
先考慮一種情況,對乙個已知物件進行拷貝,編譯系統會自動呼叫一種建構函式 拷貝建構函式,如果使用者未定義拷貝建構函式,則會呼叫預設拷貝建構函式。執行結果 呼叫一次建構函式,呼叫兩次析構函式,兩個物件的指標成員所指記憶體相同,name指標被分配一次記憶體,但是程式結束時該記憶體卻被釋放了兩次,會造成記憶...
is 和 的區別 深 淺拷貝
python中的物件包含三要素 id type value。1.id 在記憶體中儲存的位置,用來唯一標識乙個物件 id 變數名 檢視id 2.type 標識物件的型別 type 變數名 檢視資料型別 3.value is判斷的是a物件是否就是b物件,是通過type,value,id三者同時來判斷的。...