《21天學通Java(第7版)》——VC程序員的學習筆記3

第三章 對象

       1、使用new創建對象,基本格式爲:類名 實例名 = new 類名(初始化參數列表)。初始化參數列表中的參數個數和參數類型須和類的構造函數保持一致,否則將無法通過編譯。(C語言中,new創建的是一個指向實例對象的指針。

       2、使用運算符new,將創建給定類的實例,爲它分配內存,調用給定類定義的一個特殊方法(構造函數)。

       3、只有沒有定義任何構造函數的類纔有默認構造函數(即不帶任何參數的構造函數)。只要您在類中定義了一個構造函數,就不要指望它有不帶任何參數的默認構造函數。

       4、Java虛擬機(JVM)定期查找未用的對象,並收回這些對象佔用的內存,這被稱爲動態垃圾收集,是完全自動的。(C中,使用了new創建的對象指針,必須顯式調用delete來釋放

       5、使用句點表示法調用類變量、實例變量、類方法和實例方法,與C相同。使用類變量時,爲避免迷惑,應使用類名來引用類變量。這清楚地指出了引用的是類變量;同時出現奇怪的結果時,調試起來也更容易。

       6、使用關鍵字static定義類變量,因此類變量也叫靜態變量。類變量一旦修改將影響到所有實例對象。(C中,創建了一個類的實例,實例中的所有變量和函數都是與實例相關的,修改變量不會影響其他實例。這點C程序員要格外注意,避免修改了類變量而導致其他實例錯誤

       7、類方法也被稱爲靜態方法,適用於整個類。類方法通常作爲通用的工具方法,不是直接操作某個對象,而是整個類。

       8、引用是一個地址,它指明瞭對象的變量和方法的存儲位置。將對象賦給變量或將其作爲參數傳遞給方法時,您實際上並沒有使用對象。您甚至沒有使用對象的拷貝,您使用的是對象的引用。

       9、在Java 中,沒有C 和C++中那樣的顯式指針和指針算術。然而,使用引用和Java 數組,可以實現大多數指針功能,同時避免了指針的衆多缺點。

       10、要在需要子類對象的地方使用超類對象,必須顯式地進行強制類型轉換。在轉換過程中,不會損失仸何信息,而是得到了子類定義的全部方法和變量。要將對象強制轉換爲另一種類,需要使用與基本類型相同的操作:

              (classname) object

       其中classname 是目標類的名稱,object 是源對象的引用。強制類型轉換創建一個classname對象的引用;原來的對象繼續存在。

       11、除強制轉換爲某種類外,還可以將對象強制轉換爲接口,但僅當該對象的類或其超類之一實現了該接口時才行。將對象強制轉換爲接口意味着您可以調用該接口的方法,即使該對象的類並沒有實現這個接口。

       12、在任何情況下,您都不能將對象強制轉換爲基本數據類型或將基本類型強制轉換爲對象。

     13、Boolean、Byte、Character、Double、Float、Integer、Long、Short 和Void這些類通常被稱爲對象封裝器(object wrapper),它們提供了基本類型值的對象表示。

       14、自動封裝自動地將基本類型轉換爲對象,而拆封執行相反的操作。如果編寫語句時,在本應使用基本類型變量的地方使用了一個對象或相反,相應的值將被轉換,以便語句能夠被成功地執行。僅當對象包含值時才能對它進行拆封。如果沒有調用構造函數來創建對象,編譯將失敗。

       15、兩個對象之間的比較(==或!=)比較的是兩個對象的存儲指針,即地址比較。

       16、使用字面量創建一個字符串,再用相同的字符內容創建另一個字符串時,Java將返回原來的String 對象。這樣,兩個字符串將是同一個對象,並沒有創建兩個不同的對象。(C不同,在編程中需要特別注意

       17、instanceof 是一種運算符,它使用兩個操作數:左邊爲對象的引用,右邊是類名。該表

達式返回一個布爾值:如果該對象是這種類或其子類的實例,爲true,否則爲false。instanceof 運算符還可用於接口。

       18、String、Integer 等類創建實例時方式同基本數據類型,不需要使用關鍵字new。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章