《Java編程思想》第四版讀書筆記 第六章

6.1java

文中提到「Java可運行程序是一組能夠打包並壓縮爲一個JAR的.class文件。Java解釋器負責這些文件的查找、裝載和解釋」。註釋中又提到「Java中並不強求必需要使用解釋器。由於存在用來生成一個單一的可執行文件的本地代碼Java編譯器」。這裏其實是提到了JVM的兩種執行方式,編譯器將java文件編譯成class文件後,具體的執行方式有兩種:程序員

(1)解釋執行,將字節碼視爲腳本,Java解釋器解釋成本地方法;eclipse

(2)由JIT編譯成本地機器碼執行。(JIT可見第五章的讀書筆記)函數

 

若是使用package語句,它必須是文件中除註釋外的第一句程序代碼。測試

文中提到Java包的命名所有使用小寫字母,應該是官方的一種規範,編碼測試時使用大寫字母也可,不過eclipse彷佛在看待包時不區分大小寫。編碼

CLASSPATH環境變量包含一個或多個目錄,用做查找class文件的根目錄。在使用JAR文件時,必須在CLASSPATH路徑中將JAR文件的實際名稱寫清楚,而不只是指明它所在的位置目錄。翻譯

做者提到,Java去掉了C的條件編譯功能,由於它大多數時候是用於解決跨平臺問題的。而Java自己能夠自動跨平臺。條件編譯的另外一個用途是,調試環境和生成環境的切換。在Java中能夠經過改變包來實現。好比練習3中提到的在debug包和debugoff包中包含一個名字相同的類,由測試環境切換到生產環境時把包由debug切換到debugoff。debug

練習3中的翻譯有一些問題,大概意思應是:第一個版本將String參數顯示在控制檯上,第二個版本什麼都不作。調試

6.2對象

做者再次強調:不要誤認爲Java老是將當前目錄視做是查找行爲的起點之一。若是你的CLASSPATH之中缺乏「.」做爲路徑之一的話,Java就不會查找那裏。

 

將構造函數設置爲private有兩個效果:

第一,控制如何建立對象,阻止別人直接訪問某個構造函數;

第二,阻礙對此類的繼承(若是全部構造函數都是private)。

 

protected也提供包訪問權限

練習6讀起來讓我有些費解,查了一下英文原版,個人翻譯是這樣的:

建立一個帶有protected數據的類;並建立在同一文件中的另外一個類,這個類帶有一個方法操做第一個類的protected數據。

 

6.3

有兩個重要的緣由,將權限的邊界劃在了數據類型的內部:

第一個緣由是要設定客戶端程序員能夠使用和不能夠使用的界限。能夠在結構中創建本身的內部機制,沒必要擔憂客戶端程序員會偶然的將內部機制看成是他們能夠使用的接口的一部分;

第二個緣由是接口和具體實現進行分離。若是結構是用於一組程序之中,而客戶端程序員除了能夠調用public方法以外什麼也不能夠作,那麼代碼編寫者就能夠隨意更改不是publicde 代碼,而不會破壞客戶端代碼。

 

6.4

編譯單元內(一個java文件內)能夠徹底不帶public的類。在這種狀況下能夠隨意對文件進行命名。

除內部類之外,類既不能夠是private的也不能夠是protected。因此對於類的訪問權限僅有兩個選擇包訪問權限或public。

P123第一段最後一句話根據上下文有些難以理解。個人理解是做者從本段開始處的討論類的訪問修飾符,跳躍到討論將類的構造函數設置成private,這樣雖然沒法建立該類的對象依舊能夠訪問該類的public static函數。

相關文章
相關標籤/搜索