Java程式設計思想讀書筆記第二章

2020-08-11 18:56:07

2.1 用參照操縱物件

Object n = new Object();
建立了一個Object類的物件,然後建了一個指向該物件的參照:n。

在Java裡,儘管一切都被看作物件,但操縱的識別符號實際上是物件的一個「參照」

2.2必須由你建立所有物件

2.2.1 儲存到什麼地方

記憶體是怎麼分配的?可以在五個地方儲存數據:

  1. 暫存器
  2. 堆疊 Java物件參照儲存的地方
  3. Java物件儲存的地方
  4. 常數儲存 可以放在ROM(只讀記憶體)中
  5. 非RAM記憶體 流物件和持久化物件

2.2.2 特例:基本型別

基本型別不用new來建立變數,而是建立一個並非是參照的「自動「變數。這個變數直接儲存」值「,並置於堆疊中,因此較在堆中建立物件更加高效。

高精度數位
BigInteger和BigDecimal,
這倆者爲Java提供的專門用於高精度運算的類。

2.2.3 Java中的陣列

Java確保陣列會被初始化,而且不能在它的範圍之外被存取

2.3 永遠不需要銷燬物件

變數生命週期的混亂往往會導致大量的程式bug,但Java用一種有趣的機制 機製大大簡化了物件清理的問題。

2.3.1 作用域

作用域決定了在其內定義的變數名的可見性和生命週期

在C、C++和Java中,作用域由花括號的位置決定。
{
int x=12;{
int q= 96;//Both x and q available}
}
//Only x available
// q is "out of scope"
}

在作用域裏面定義的變數只可用於作用域結束之前

2.3.2 物件的作用域


String s = new String("a String");
// End of scope
}

Java物件不具備和基本型別一樣的生命週期,當用new 建立一個Java物件時,他可以存活在作用域之外。參照s在作用域終點就消失了,但s指向的String物件仍舊繼續佔據着記憶體空間。

爲了防止這些物件填滿整個記憶體空間,Java依靠垃圾回收器解決記憶體問題。
你只需要建立物件,一旦不需要,它們就會自行消失

2.4 建立新的數據型別:類

class ATypeName {
/* Class body goes here */ }
這就命名了一個新的數據型別:類;
定義了一個類之後(雖然上面的例子僅有一條註釋語句),但也可以用new來建立這種型別的物件:
ATypeName a = new ATypeName( );

2.4.1 欄位和方法

一旦定義了一個類,就可以在類中定義倆種類型的元素:欄位(有時也被稱作數據成員)和方法(有時也被稱爲成員函數)。

基本成員預設值
若類的某個成員是基本數據型別,即使程式設計師沒有對其進行初始化,Java也會確保它獲得一個預設值。

基本型別 預設值
boolean false
char null
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d

然而「區域性」變數(即並非某個類的欄位)不會被預設初始化。

2.5 方法、參數和返回值

方法的基本組成部分包括:名稱、參數列表、返回值和方法體
RetureType methodName(/*Argument list*/){
/* Method body*/
}
方法名和參數列表(它們合起來被稱爲「方法簽名」)唯一地標識出某個方法

2.5.1 參數列表

參數列表中必須指定每個所傳遞物件的型別以及名字
若返回型別是void,return關鍵字的作用只是用來退出方法。

2.6 構建第一個Java程式

2.6.1 名字可見性

包名——逆用域名

2.6.2 運用其他構件

在自己程式裡使用預先定義好的類,可以使用關鍵字import來準確的告訴編譯器你想要的工具類是什麼。

2.6.3 static關鍵字

建立類的過程,換句話說也是對那個類的物件的外觀與行爲的描述。除非用new建立那個類的物件,否則,實際上並未獲得任何物件。執行new來建立物件,數據儲存空間才被分配,其方法纔可供外界呼叫。但存在倆種特殊需求是上述方法滿足不了的。

一種情形是:只想爲某特定域分配單一儲存空間;而不去考慮究竟要建立多少物件,甚至根本就不建立任何物件。

另一種情形時,希望某個方法不與包含它的類的任何物件關聯在一起;也就是說,即便不建立這個類的物件,也可以呼叫這個方法。

通過關鍵字static可以滿足上述倆種需要。

使用類名是參照static變數的首選方法,這不僅僅是因爲它強調了變數的static結構,而且在某些情況下它還爲編譯器進行優化提供了更好的機會。

和其他任何方法一樣,static關鍵字可以建立或者使用與其型別相同的被命名物件,因此,static方法常常拿來做「牧羊人」的角色,負責看護與其隸屬同一種型別的範例羣。

2.7 你的第一個Java程式

第一个Java程序

2.7.1 編譯和執行

JDK:Java Developer’s Kit,Java開發人員工具包。
自行安裝編譯器

2.8 註釋和嵌入式文件

Java有着倆種註釋風格。
第一種
注释
第二種
注释

2.8.1 註釋文件

javadoc輸出的是一個HTML檔案,可以同Web瀏覽器檢視。這樣,該工具就使得我們只需建立和維護單一的原始檔,並能自動生成有用的文件。有了javadoc,就有了建立文件的簡明直觀的標準。

2.8.2 語法

所有javadoc命令都只能在「/*」註釋中出現。
使用javadoc的方式主要有倆種:嵌入式HTML,或使用「文件標籤」。
共有三種類型的註釋文件,分別對應於註釋位置後面的三種元素:類、域、方法
注意:javadoc只能爲public和protect成員進行文件註釋

2.8.3 嵌入式HTML

不要在嵌入式HTML中使用標題標籤,因爲javadoc會插入自己的標題,而你的標題可能與它們發生衝突。

2.8.4 一些標籤範例

這一塊暫時略過,寫註釋是不可能的,手動狗頭…

2.8.5 文件範例

注释文档示例

2.9 編碼風格

Java程式語言編碼約定中,提出程式碼風格:駝峯命名法

2.10 總結

瞭解了編寫一個簡單程式的Java程式設計知識。此外,對Java語言及它的一些基本思想也有一個總體認識。