這學期剛開的Java,感覺對面向對象的思想還是沒能很好的理解,下午無意翻了一下《Java編程思想》,Bruce Eckel在第二章寫到Everything is an Object,這句話寫得很簡單,但不知道自己什麼時候才能真正理解並很好的運用它!
呵呵,廢話就不多說了,下面把自己做的Java作業貼出來,現階段講的都是概念性的東西,下面的答案大部分是書上的原話,少量是自己的理解組織出來的!肯定有不少錯誤或者理解不到位的地方,希望大家能指出來,謝謝!
說明一下,課本選用的是《Java 2 程序設計》,陳國君 陳磊 陳錫禎 劉洋 編著,清華大學出版社。這本書寫得很爛(老師的原話),老師在講課的時候會經常提到裏面的錯誤,但他說這樣其實也不錯,省得他再去找反面教材來說明問題!
1.一個類的公共成員與私有成員有何區別?
答:公共成員用public來修飾,它可以被任何對象的方法訪問到
私有成員用private來修飾,它只允許自己類的方法訪問
2.什麼是方法的重載?
答:重載是指在面向對象的程序設計語言中,相同的方法名稱如果參數的個數不同,或者是參數個數相同但類型不同,則方法具有不同的功能
3.一個類的構造方法的作用是什麼?若一個類沒有聲明構造方法,該程序能正確執行嗎?爲什麼?
答:①構造方法的主要作用是完成對類對象的初始化工作
②能,因爲Java會自動調用默認的構造方法
4.構造方法有哪些特徵?
答:⑴構造方法的方法名與類名相同
⑵構造方法沒有返回值,也不能寫void
⑶構造方法的主要作用是完成對類對象的初始化工作
⑷構造方法一般不能由編程人員顯式地直接調用,而是用new來調用
⑸在創建一個類的對象的同時,系統會自動調用該類的構造方法爲新對象初始化
5.在一個構造方法內可以調用另一個構造方法嗎?如果可以,如何調用?
答:可以.
在某一構造方法裏調用另一構造方法時,必須使用this關鍵字來調用,否則編譯時將出現錯誤;this關鍵字必須寫在構造方法內的第一行位置
6.靜態變量與實例變量有哪些不同?
答:靜態變量在內存中只有一個,java虛擬機在加載類的過程中爲靜態變量分配內存,靜態變量位於方法區,被類的所有實例共享。靜態變量可以直接通過類名進行訪問,其生命週期取決於類的生命週期;而實例變量取決於類的實例。每創建一個實例,java虛擬機就會爲實例變量分配一次內存,實例變量位於堆區中,其生命週期取決於實例的生命週期。
7.靜態方法與實例方法有哪些不同?
答:①靜態方法常駐內存,實例方法不是,所以靜態方法效率高但佔內存。
②靜態方法在堆上分配內存,實例方法在堆棧上。
③實例方法需要先創建實例纔可以調用,而靜態方法則不用。
8.在一個靜態方法內調用一個非靜態成員爲什麼是非法的?
答:因爲靜態方法是屬於整個類的,所以它不能操縱和處理屬於某個對象的成員,而只能處理屬於整個類的成員,即靜態方法只能訪問靜態成員變量或者調用靜態成員方法
9.對象的相等與指向它們的引用相等,兩者有什麼不同?
答:對象的相等是指對象的值相等,但是兩個佔據不同內存空間的不同對象;指向他們的引用相等是兩對象的內存地址相等。
10.什麼是靜態初始化器?其作用是什麼?靜態初始化器由誰在何時執行?它與構造方法有何不同?
答:靜態初始化器是由關鍵字static修飾的一對花括號"{}"括起來的語句組。
它是用來初始化工作的
靜態初始化器是在所屬的類被加載入內存時由系統調用執行
不同點:(1) 靜態初始化器用於對類的靜態數據成員進行初始化。而構造方法用來對新創建的對象進行初始化。
(2) 靜態初始化器不是方法,沒有方法名、返回值和參數表。
(3) 靜態初始化器是在它所屬的類加載到內存時由系統調用執行的,而構造方法是在系統用new運算符產生新對象時自動執行的。
see Yizero by yizero.com