2.1 用引用操作對象
java操作的標識符實際上是對象的一個“引用”。可以將這一情形想像成遙控器(引用)來操縱電視機(對象)。
擁有一個引用,並不一定需要有一個對象與它關聯。例如:創建一個引用 String s; 這裏創建的只是引用,並不是對象。如果此時,向s發送一個消息,就會返回一個運行時錯誤。這是因爲此時s實際上沒有與任何事物相關聯。
2.2 創建對象
(1)程序運行時,有5個不同的地方可以存儲數據
寄存器:最快的存儲區 —— 處理器內部。不能直接控制,也不能在程序中感覺到寄存器存在的任何跡象。
堆棧:位於通用RAM中,但通過堆棧指針可以從處理器那裏獲得直接支持。堆棧指針若向下移動,則分配新的內存;若向上移動,則釋放那些內存。僅次於寄存器,java系統必須知道存儲在堆棧內所有的項的生命週期,以便上下移動堆棧指針。(可以存儲對象引用,但是java對象並不存儲於其中)
堆:一種通用的內存池(也位於RAM區),用於存放所有的java對象。堆不同於堆棧的好處是:編譯器不需要知道存儲的數據在堆裏面存活多長時間。
常量存儲:常量值通常是直接存放在程序代碼內部,這樣做是安全的,因爲它們永遠不會被改變。
非RAM存儲:如果數據完全存活於程序之外,那麼它可以不受程序的任何控制,在程序沒有運行時也可以存在。例如:流對象(發送給另一臺機器)和持久化對象(存儲到硬盤上)
基本類型:boolean、char、byte、short、int、long、float、double
高精度數字:BigInteger類(支持任意精度的整數)和BigDecimal類(支持任意精度的定點數,可以用它進行精確的貨幣計算),兩者沒有對應的基本類型。
數組:當創建一個數組對象時,實際上就是創建了一個引用數組,並且每個引用都會自動被初始化一個特定值,該值有用自己的關鍵字null。一旦java看到null,就知道這個引用還沒有指向某個對象。
2.3 永遠不需要銷燬的對象
作用域:
String s = New String(“a string”);
引用s在作用域終點就消失了,然而,s指向的String對象仍繼續佔據內存空間。
java有一個垃圾回收器,用來監視用new創建的所有對象,並辨別那些不會再被引用的對象,隨後,釋放這些對象的內存空間,以便其他新的對象使用。
2.4 類
在類中設置兩種類型元素:字段(如果字段是對某個對象的引用,那麼必須初始化該引用)和方法
當變量作爲類的成員使用時,java才確保給定其默認值,以確保那些事基本類型的成員變量得到初始化,防止產生程序錯誤。
2.5 方法、參數和返回值
方法的基本組成部分包括:名稱、參數、返回值和方法體。
方法名和參數列表合起來稱爲“方法簽名”
參數列表:在參數列表中必須制定每個所傳遞對象的類型及名字,像java中任何傳遞對象的場合一樣,這裏傳遞的實際是引用,並且引用的類型必須正確。
返回值:若返回類型是void,return關鍵字的作用只是用來退出方法。
2.6 static關鍵字
通常,執行new來創建對象時,數據存儲空間才能被分配,其方法才供外界調用。
以下兩種情形用上述方法是無法解決的:
一種是,只想爲某特定域分配單一存儲空間,而不去考慮究竟要創建多少對象,甚至根本就不創建任何對象。另一種是,希望某個方法不與包含它的類的任何對象關聯在一起。也就是說,即使沒有創建對象,也能夠調用這個方法。
通過static可以滿足這兩方面的需要。當聲明一個事物是static時,就意味着這個域或方法不會與包含它的那個類的任何對象實例關聯在一起。
類數據和類方法,代表的數據和方法只是作爲整個類,而不是類的某個特定對象而存在。(一個static字段對某個類來說都只有一份存儲空間,而非static字段則是對每個對象有一個存儲空間)。
2.7註釋和嵌入式文檔
javadoc用於提取註釋的工具,輸出的是一個HTML文件,可以用web瀏覽器查看。
javadoc只能爲pulbic和protected成員進行文檔註釋。
標籤:
@see:引用其他類
@version:版本信息
@author:作者信息
@since:允許你指定程序最早使用的版本
@param:參數
@return:返回值
@throws:異常
@deprcated:用於指出一些舊特性已由新特性取代,建議用於不要再使用這些舊特性。
2.8編碼風格
駝峯風格:大駝峯和小駝峯
類名的首字母要大寫,方法、字段以及對象引用名稱首字母小寫。