1. 程式人生 > >《Java開發實戰經典》筆記

《Java開發實戰經典》筆記

1.引用資料型別(class, array等),其實就是分棧記憶體和堆記憶體的資料型別,在棧記憶體中儲存物件, 在堆記憶體中存具體值。

因為陣列是引用資料型別,所以陣列變數儲存的並非是陣列的實體,而是陣列堆記憶體的地址。

2.對於引用資料型別,比如陣列傳遞進方法中後,如果方法對陣列本身做出了修改,修改結果也將儲存下來,即使方法沒有返回值,修改的結果也將儲存。(這也能夠理解為什麼用setter 設定物件屬性後getter就能輸出修改的內容)

3.被封裝的屬性或方法只能在其類的內部被呼叫,而不能在類的外部呼叫。

4.setter的作用是為屬性賦值,賦值之後這個屬性值就改變了,在主方法中用getter的話得到的值就是修改的值。

5.new Person("Oscar", 30).tell(); 這個是匿名物件的方法使用格式!

6.使用new關鍵字的話,不管怎麼樣都會開闢新的堆記憶體空間,而String str="Hello"的形式可能情況會不同。

7.一定記住字串的內容一旦宣告不可改變


一個String物件的內容的改變實際上是通過記憶體地址的斷開和連線完成的,而字串本身的內容沒有任何改變,即雖然你沒有用new關鍵字,但程式自動開闢了一個新的堆記憶體。

8.引用傳遞是指將堆記憶體空間的使用權交給多個棧記憶體。

9.

將傳遞引數的name值賦給name中的name屬性,即把從構造方法中傳遞進去的引數值付給屬性,這是this的一個用法:在賦值時明確地指出屬性羨慕

!!!。比如“this.name”屬性和“this.age”屬性。建議以後在類中訪問屬性時都加上this

10.

用this呼叫構造方法優點是可以重複執行this指定的構造方法,很方便,但要注意使用this呼叫構造方法時必須,也只能放在構造方法的第一行,並且還要留一個出口,也就是說程式中至少存在一個沒有包含用this呼叫構造方法的構造方法。(一般都將無參構造作為出口)

11.物件比較操作是java中比較核心的操作,

步驟:(1)判斷物件地址是否相等;

            (2) 分別判斷物件屬性是否相等;用 if(p1.compare(p2)) 來判斷

p1.name和p1.getName都可以訪問或取得物件

12.使用類名訪問static屬性:

Person.country="B city";

13.String args[]表示的是執行時的引數,引數傳遞的形式為“Java 類名稱  引數1 引數2 引數3”。所有的輸入引數都儲存在args陣列之中。

14.構造塊(直接寫在類中的程式碼塊);

構造方法;

主方法;

15.


16.使用內部類可以方便的訪問外部類中的私有屬性。使用static定義內部類就可以直接訪問內部類中的屬性


總結:

你不能在主方法類裡直接呼叫內部類Inner,在外部類中可以呼叫內部類,在主方法中只能呼叫外部類,或者通過外部類呼叫內部類(即經過static宣告的內部類)。

總結:內部類Inner裡面有print()方法,


並且內部類存在於外部類Outer的fun()方法之中,


fun()方法還在Outer外部類中被呼叫了。 


所以在主方法中用new Outer().fun()來進行賦值,呼叫方法的操作。