Java程序設計2 第七章課後習題

       這學期剛開的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

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